8没有签名文件编码
我使用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更改编码为UTF-8没有BOM签名?
写入文件的代码片段:
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("ąśżęłóĄŚŻĘŁÓ");
我个人选择了第一种方法,因为每次我想打印特殊字符时都不会强迫我继续使用其他函数。 在这两种情况下,结果都是一样的。
感谢所有发表评论并尝试提供帮助的人。
链接地址: http://www.djcxy.com/p/33363.html