繁体   English   中英

Visual Studio强制UTF-8没有签名文件编码

[英]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()

经过多次尝试失败后,我有两种方法可以解决编码问题:

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM