0
我不明白當我創建一個文本流,然後做setCodec(「some_encoding」)會發生什麼,它開始假設我正在閱讀的文件是在some_encoding和當我做QTextStream :: readAll返回我some_encoding中的QString?或者QTextStream :: readAll在unicode中返回一個QString?如何在Qt中正確讀取特定編碼的文件?
這是我做的:
QString read(const char* encoding)
{
QTextStream stream(&file);
stream.setCodec(encoding);
return stream.readAll();
}
但我沒有得到一個unicode字符串回來。所以,底線是,我想知道,如何以某種編碼創建文件,將所有內容保存爲Unicode到QString中?如果readAll()在指定的編碼中返回一個字符串,該如何將該編碼轉換爲unicode?
'QTextStream :: readAll'返回一個'QString',它是UTF-16。目前還不清楚你的意思是「我沒有得到一個unicode字符串」。你的意思是,字符串有錯誤的字符/錯誤的長度/某些東西,因爲它使用錯誤的編解碼器轉換爲UTF-16? – hyde
@hyde我在我的回答中解釋過。我認爲這是錯誤的,因爲我從一開始就沒有閱讀,我將它輸出到qDebug()並且輸出是空的,這通常發生在編碼關閉時。我是編碼新手,所以我不知道readAll會以UTF-16返回一個字符串。 – Pavel