[問題][QT] readline空格後面被丟棄
我的開發平台是 win7
工具是QT Creator
版本是Qt Core 5.15.2
我用QNetworkReply 去收網頁內容並且分析
網頁是很固定的純文字內容
本來爬得很順利的
以下是程式碼
m_PageRequest.setUrl(QUrl{urlString});
QNetworkReply *reply = m_Manager.get(m_PageRequest);
QEventLoop event_loop;
QObject::connect(reply, SIGNAL(finished()), &event_loop, SLOT(quit()));
event_loop.exec();
QString headLine{reply->readLine()};
if(headLine.contains(SUCCESSED_HEADLINE)){
for(int i{0};i<23;i++) //我要的資料在剩下的第24行
reply->readLine();
QString raw{reply->readLine()};
parse(raw);
}
但是網頁的文字裡面包含某一個特定的名字的時候
程式就會出錯。
這個名字從網頁看起來只有三個字 XXX
把它複製上PTT來看也的只有三個字 XXX
但是在chorme的檢視網頁原始碼裡面就變成 XX X
中間空了一個空白
https://imgur.com/rH0j2nP
左邊/uploader/後面那一串就是他的名字網頁編碼
本來正常情況下uploader後面還有資料是我需要的
但是只要遇到這個名字,字串卻只有到名字中間的空白,空白後面的資料都沒了
本來以為是跑到下一行,但並沒有。
現在文章打到一半我在想是不是
QString raw{reply->readLine()};
在readLine() 的資料轉換成 QString的時候,把那個空白當作結束符號
後面的就沒有copy到raw 這個QString裡面了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.225.144 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1639195976.A.7FF.html
※ 編輯: liu2007 (123.192.225.144 臺灣), 12/11/2021 12:14:44
→
12/11 12:27,
2年前
, 1F
12/11 12:27, 1F
→
12/11 12:27,
2年前
, 2F
12/11 12:27, 2F
ba: 50524
rba: 14367
reply->readLine()的ByteArray size = 50524
QString raw{reply->readLine()}; raw.toUtf8().size = 14367
看來要找怎麼拔ByteArray裡的結束字元的方法了.....
※ 編輯: liu2007 (123.192.225.144 臺灣), 12/11/2021 12:46:39
→
12/11 13:15,
2年前
, 3F
12/11 13:15, 3F
→
12/11 13:15,
2年前
, 4F
12/11 13:15, 4F
QByteArray ba{reply->readLine()};
QByteArray nba;
foreach(char c, ba){
if (c != '\0')
nba.push_back(c);
}
QString raw{nba};
※ 編輯: liu2007 (123.192.225.144 臺灣), 12/11/2021 13:34:12
→
12/11 13:56,
2年前
, 5F
12/11 13:56, 5F
→
12/11 13:57,
2年前
, 6F
12/11 13:57, 6F
→
12/11 13:58,
2年前
, 7F
12/11 13:58, 7F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章