找回密码
 立即注册
收起左侧

Qt5中的中文乱码问题

6
回复
16617
查看
[复制链接]
累计签到:17 天
连续签到:1 天
来源: 2013-7-3 21:49:01 显示全部楼层 |阅读模式
1Qter豆
写了个程序,就是从控制台输出到文本的文件中读取字符,然后用信息框显示出。控制台的输出文本跟平台语言有关,本人使用的是英文语言包的win8,但输出英文没问题,但当语言切换为中文,或在其他中文系统中运行时信息框的文本乱码。搞了很久无解。

最佳答案

查看完整内容

请强制使用utf-8, 在main.cpp文件中
回复

使用道具 举报

尚未签到

2013-7-3 21:49:02 显示全部楼层
请强制使用utf-8, 在main.cpp文件中
  1. #include <QApplication>
  2. #include <QtCore>
  3. #include "mainwindow.h"

  4. int main(int argc, char *argv[])
  5. {
  6.     QApplication a(argc, argv);

  7.     QTextCodec *codec = QTextCodec::codecForName("UTF-8");

  8.     QTextCodec::setCodecForLocale(codec);
  9.     QTextCodec::setCodecForCStrings(codec);
  10.     QTextCodec::setCodecForTr(codec);

  11.     MainWindow w;
  12.     w.show();
  13.    
  14.     return a.exec();
  15. }
复制代码
回复

使用道具 举报

累计签到:17 天
连续签到:1 天
2013-7-4 11:29:31 显示全部楼层
Joey_Chan 发表于 2013-7-3 22:28
请强制使用utf-8, 在main.cpp文件中

我记得在QT5总好像废除了上面函数其一。我的问题主要是出现在:
我假设运行的控制台命令: ping baidu.com > c:/1.txt
在中文系统中1.txt是包含中文的,且CMD中中文应该是GBK吧?
我想用MessageBox显示1.txt的内容,但其中中文会乱码。
回复

使用道具 举报

尚未签到

2013-7-4 11:55:53 显示全部楼层
回复

使用道具 举报

尚未签到

2013-7-4 18:36:56 显示全部楼层
jakes 发表于 2013-7-4 11:29
我记得在QT5总好像废除了上面函数其一。我的问题主要是出现在:
我假设运行的控制台命令: ping baidu.co ...

其实你知道不知道你的1.txt是什么编码的?我印象中win的记事本是默认gb18030(说gbk也行),可能你要先确定你读文件的编码方式,确定读出来的没问题,再输出
回复

使用道具 举报

累计签到:17 天
连续签到:1 天
2013-7-5 07:49:38 显示全部楼层
Joey_Chan 发表于 2013-7-4 18:36
其实你知道不知道你的1.txt是什么编码的?我印象中win的记事本是默认gb18030(说gbk也行),可能你要先确 ...

我可不可以先设置locale为GBK,然后读文件的时候使用fromLocal8Bit()?
回复

使用道具 举报

尚未签到

2013-7-6 02:05:38 显示全部楼层
jakes 发表于 2013-7-5 07:49
我可不可以先设置locale为GBK,然后读文件的时候使用fromLocal8Bit()?

我不是很确定,你试试吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了