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()


经过许多不成功的尝试,我有两种可能性来解决编码问题:

  • Visual Studio的插件:https://vlasovstudio.com/fix-file-encoding/,这个插件可以阻止Visual Studio将BOM添加到文件的开头,这样,我的所有文件都可以使用UTF-8编码和原始字符串可以包含特殊字符,并且它们将被显示/写入而没有任何问题,
  • 这是@MrEricSir在评论中提出的建议。 这个想法是对包含特殊字符的字符串使用QStringLiteral函数。

    像这样: QStringLiteral("ąśżęłóĄŚŻĘŁÓ");

  • 我个人选择了第一种方法,因为每次我想打印特殊字符时都不会强迫我继续使用其他函数。 在这两种情况下,结果都是一样的。

    感谢所有发表评论并尝试提供帮助的人。

    链接地址: http://www.djcxy.com/p/33363.html

    上一篇: 8 with no signature file encoding

    下一篇: Changing File Encoding in Visual Studio 2015