qt - 如何通过 Qt 更改记事本的编码
问题描述
我正在通过 Qt 在记事本中打开一个文件,但记事本以错误的编码读取它。我让图片解释一下......(我在两张图片中圈出了编码)
这就是我得到的
这就是我想要得到的
如何强制记事本以正确的编码读取它?
解决方案
在记事本中打开之前尝试修改您的文件 - 根据https://en.wikipedia.org/wiki/Byte_order_mark添加 UTF-8 标记。
这是代码(简化,适用于 Windows):
#include <QFile>
#include <QProcess>
int main(int /*argc*/, char */*argv*/[])
{
const QString notepath = "D:\\your-file.bin";
const static uint8_t utf8marker[] = {0xEF, 0xBB, 0xBF};
QFile file(notepath);
file.open(QIODevice::ReadWrite);
auto buffer = file.readAll();
buffer.prepend(reinterpret_cast<const char*>(utf8marker), sizeof(utf8marker));
file.seek(0);
file.write(buffer);
file.close();
QProcess::startDetached("C:\\Windows\\system32\\notepad.exe", {notepath});
return 0;
}
推荐阅读
- pandas - Multilevel Indexing with Groupby
- c++ - 扫描图像始终为 96 DPI
- python - lambda函数中的“isin”不起作用吗?
- php - 我需要什么挂钩来保存设置?
- mysql - mysql 在 sum() 函数上使用 concat,例如 concat(sum(col1),"%")
- python - Python Pypdf2 pdf合并,保存时手动选择目录
- flutter - 在颤振中从firebase中检索数据
- c++ - 在模板参数中,哪些规则允许编译器推断数组的项数?
- tensorflow - tensorflow:推荐系统无需重新训练模型即可预测用户
- java - 不同的条形颜色 JavaFX 图表