[英]Visual Studio force UTF-8 with no signature file encoding
我正在使用Qt5 和Visual Studio 2012,並且最近編寫了一個記錄器類,它基本上將字符串流重定向到文件。 有一天,我意識到沒有“特殊”角色支持(例如,波蘭語,德語,俄語)。
qDebug() << "Special characters: ąężźćłóĄĘŻĆŁÓ";
產生以下輸出:
Special characters: �꿟����ʯƣ�
我嘗試過多個Unicode設置,在File
- > Advanced Save Options
監聽。
但是,沒有選項可以保存沒有BOM
簽名的文件,我認為這可能是問題,因為當我通過Notepad ++將文件編碼更改為UTF-8 (without BOM)
,然后編譯時,一切正常。 ..不幸的是,直到我在Visual Studio中進行任何更改。
我也嘗試將編譯器編碼設置為Unicode:
Visual Studio是否有任何解決方案可以在沒有BOM簽名的情況下將編碼更改為UTF-8?
寫入文件的代碼片段:
file = new QFile;
file->setFileName(fileName);
file->open(QIODevice::Append | QIODevice::Text);
[..]
QTextStream out(file);
out.setCodec("UTF-8");
out << QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss ") << value << "\n";
我也一直在嘗試使用value.toUtf8()
。
經過多次嘗試失敗后,我有兩種方法可以解決編碼問題:
這個是由@MrEricSir在評論中提出的。 我們的想法是在包含特殊字符的字符串上使用QStringLiteral
函數。
像這樣: QStringLiteral("ąśżęłóĄŚŻĘŁÓ");
我個人選擇了第一種方法,因為每次我想打印特殊字符時都不會強迫我繼續使用其他功能。 在這兩種情況下,結果都是一樣的。
感謝所有發表評論並試圖提供幫助的人。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.