【发布时间】:2011-01-24 09:39:57
【问题描述】:
我正在尝试在 Qt 中创建一个 UTF-8 编码文件。
#include <QtCore>
int main()
{
QString unicodeString = "Some Unicode string";
QFile fileOut("D:\\Temp\\qt_unicode.txt");
if (!fileOut.open(QIODevice::WriteOnly | QIODevice::Text))
{
return -1;
}
QTextStream streamFileOut(&fileOut);
streamFileOut.setCodec("UTF-8");
streamFileOut << unicodeString;
streamFileOut.flush();
fileOut.close();
return 0;
}
我认为当 QString 默认为 Unicode 并且我将输出流的编解码器设置为 UTF-8 时,我的文件将是 UTF-8。但它不是,它是 ANSI。 我做错了什么?我的琴弦有问题吗?您能更正我的代码以创建 UTF-8 文件吗? 对我来说,下一步是读取 ANSI 文件并将其保存为 UTF-8 文件,因此我必须对每个读取的字符串执行转换,但现在,我想从一个文件开始。 谢谢。
【问题讨论】:
-
您应该使用 QString::fromUtf8() 将字符串文字转换为字符串。此外,一些编译器在源文件 (MSVC) 中存在非 ascii 编码问题。所以也许也可以尝试在通过例如输入字符串时是否有效。 QInputDialog。我还建议在遇到此类问题时定义 QT_NO_CAST_FROM_ASCII 和 QT_NO_CAST_TO_ASCII 。它会禁用隐式转换,从而更清楚地知道发生了什么。