Visual Studio 强制 UTF-8 无签名文件编码
Visual Studio force UTF-8 with no signature file encoding
我正在使用 Qt5 和 Visual Studio 2012,最近写了一个记录器 class,它基本上将字符串流重定向到文件。前几天我意识到没有 "special" 字符支持(例如波兰语、德语、俄语)。
qDebug() << "Special characters: ąężźćłóĄĘŻĆŁÓ";
正在生成以下输出:
Special characters: �꿟����ʯƣ�
我在 File
-> Advanced Save Options
.
中尝试了多个 Unicode 设置
但是,没有选项可以在没有 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 编码原始字符串可以包含特殊字符,它们 displayed/written 没有任何问题,
这是@MrEricSir 在评论中推荐的。这个想法是在包含特殊字符的字符串上使用 QStringLiteral
函数。
像这样:QStringLiteral("ąśżęłóĄŚŻĘŁÓ");
我个人选择了第一种方法,因为它不会强迫我每次想打印特殊字符时都使用其他函数。在这两种情况下,结果是相同的。
感谢所有发表评论并试图提供帮助的人。
我正在使用 Qt5 和 Visual Studio 2012,最近写了一个记录器 class,它基本上将字符串流重定向到文件。前几天我意识到没有 "special" 字符支持(例如波兰语、德语、俄语)。
qDebug() << "Special characters: ąężźćłóĄĘŻĆŁÓ";
正在生成以下输出:
Special characters: �꿟����ʯƣ�
我在 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 编码原始字符串可以包含特殊字符,它们 displayed/written 没有任何问题,
这是@MrEricSir 在评论中推荐的。这个想法是在包含特殊字符的字符串上使用
QStringLiteral
函数。像这样:
QStringLiteral("ąśżęłóĄŚŻĘŁÓ");
我个人选择了第一种方法,因为它不会强迫我每次想打印特殊字符时都使用其他函数。在这两种情况下,结果是相同的。
感谢所有发表评论并试图提供帮助的人。