QT读取文本显示乱码

IIlIIlllIIll 2016-08-07 12:38:55
环境是linux,程序要读取一个MID文档并将其中的内容显示出来。那个文档是windows下拷过来的,编码估计是ANSI(GBK),然后程序显示的中文全是乱码,我把文档分别用ANSI、unicode、utf-8另存为,测试结果程序只有读取utf-8时不会出现乱码。
网上搜的很多说用textcodec,可是我试了没有效,而且我直接在代码里输入中文都可以正常显示(是不是因为代码保存格式是utf-8?)
所以问题就是:有没有方法能让qt读取非utf-8格式编码的文档且显示中文不出现乱码(因为我不可能把这么多mid文档全另存为utf-8格式啊,而且要保证通用性)?
...全文
776 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
IIlIIlllIIll 2016-08-23
  • 打赏
  • 举报
回复
问题已解决,在读取信息的代码前加上QTextCodec *codec = QTextCodec::codecForName("GBK");就行了。
尘中远 2016-08-12
  • 打赏
  • 举报
回复
windows和linux的编码系统不一样,你的local编码是不一样的,在windows下你的local编码是GBK,读取GBK保存的文档当然不一样,在linux下你的local编码是UTF-8,读取GBK编码当然乱码,因此,跨平台文本读取都需要显示指定编码,你用Qt Creator打gbk保存的代码,Qt Creator也会让你指定编码 因此,打开文档时先用QTextStream::setCodec指定文本的编码先
IIlIIlllIIll 2016-08-08
  • 打赏
  • 举报
回复
但是相同的文档在windows控制台上测试可以正常显示中文,在qt上无论是终端还是窗口程序都是乱码,还是qt的问题吗?qt要怎么设置呢?
IIlIIlllIIll 2016-08-08
  • 打赏
  • 举报
回复
引用 1 楼 feilinhe 的回复:
读文本文件时,用QTextStream函数setCodec设置下字符集
我是调用别人写的一个库函数,返回参数类型是const char*,直接打印出来就是乱码。这是库实现的问题还是qt的问题?
feilinhe 2016-08-07
  • 打赏
  • 举报
回复
读文本文件时,用QTextStream函数setCodec设置下字符集

16,201

社区成员

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

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