写入中文到QFile会乱码

rbllbr123 2013-03-22 03:59:20
直接将"测试"写入文本中 打开文本后发现是 乱码 难道不能直接双引号 只能QString包含字符 或者tr等等 qDebug()输出来也都是正常显示的中文 但是直接双引号写入文本中为什么会乱码呢
下面是部分代码

QApplication a(argc, argv);

QTextCodec *codec = QTextCodec::codecForName("UTF-8");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);

QFile dstFile("c:/123.txt");
if (!dstFile.open(QFile::WriteOnly | QIODevice::Truncate | QFile::Text))
{
return 1;
}
QTextStream out(&dstFile);
out <<QString("测试").toUtf8()<<QString("测试")<<QObject::tr("测试")<<"测试";
dstFile.close();
qDebug()<<QString("测试").toUtf8()<<QString("测试")<<QObject::tr("测试")<<"测试";
...全文
911 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
rbllbr123 2013-03-25
  • 打赏
  • 举报
回复
我的编码默认已经更改为utf-8模式了
现在在我的程序中编码默认都采用utf-8模式的,不想更改为GB2312
haltwang 2013-03-25
  • 打赏
  • 举报
回复
我猜测楼主是在windows下写的代码吧。 你的编辑器里面的编码方式默认是GB2312,所以用双引号括起来的常量字符串是以GB2312编码的,而你的代码: QTextCodec::setCodecForTr(codec); QTextCodec::setCodecForLocale(codec); QTextCodec::setCodecForCStrings(codec); 让你的QString编码变成了UTF8,所以写入文件后txt在识别编码的时候识别成了UTF8,导致最后两个以GB2312的编码的乱码。 解决方法: 改成 QTextCodec *codec = QTextCodec::codecForName("GB2312"); 或者: QTextCodec *codec = QTextCodec::codecForLocale(); 扩展: 楼主可以用二级制文件查看的方式查看你生成的文件,前面的字符都是 1110xxxx 10xxxxxx 10xxxxxx (以E)表示一个汉字,最后俩汉字是>127char + >127的char两个字节表示已个中文字符。 楼主还可以试试新建一个txt在里面写上“联通”,然后保存,再重新打开,乱码了?为什么呢,微软的txt阅读器也是猜测的编码,会猜错的哦
rbllbr123 2013-03-25
  • 打赏
  • 举报
回复
还是一样的
jdwx 2013-03-22
  • 打赏
  • 举报
回复
下一个Notepad++,用UTF-8打开文本,再看看。
雲天之巔 2013-03-22
  • 打赏
  • 举报
回复
然后你是在 windows下打开的那个文件?

16,816

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧