Qt汉字显示乱码的问题
来源:互联网 发布:不交钱的网络打字兼职 编辑:程序博客网 时间:2024/05/08 05:14
学习《Qt Creator快速入门》第二章第三节一个在窗口中显示汉字的程序时遇到这个问题。按照书上例子一字一句的敲到电脑上,运行后显示乱码;运行作者源程序,汉字显示正常。
程序完全相同,而且是在同一台电脑上运行的,因此想到应该是设置的问题。想起刚打开作者所给源程序的工程文件时,出现过下面的提示:
当时的处理是点击右边的选择编码,出现下面的对话框:
选择第一个,然后点击根据编码重新载入。之后运行一切正常,不过当时并不知道这意味着什么。
因此打算将自己键入的程序设置也做此更改,可是更改时却又提示“无法用‘system’编码解码‘main.cpp’.无法编辑”。
各种摸索仍不能解决,最终在网上发现了http://wenku.baidu.com/view/ac7e85f704a1b0717fd5dd99.html这篇解释,知道问题的根源在于源文件的编码是不同的,而用setCodecForTr函数时,要指定相同的编码。
这样就大概知道原因了。代码中QTextCodec::setCodecForTr(QTextCodec::codecForLocale())用来设置系统(我的理解是操作系统)指定的编码,而我敲入代码时Qt的默认编码是UTF-8,和操作系统指定的编码不同,然后Qt就以错误的方式(应该用UTF-8)翻译了那些汉语,因此显示乱码;而作者给的程序运行后显示正常是因为我在打开项目文件时的那个操作将代码的编码以系统指定的编码(应该就是那个system了)保存了。
知道原因解决就容易多了,敲代码之前将默认编码改为system,或者不改编码,而是指定编码为“UTF-8”即可。
最后,摸索中遇到的以下问题:作者推荐的QTextCodec::setCodecForTr(QTextCodec::codecForName(“gb18030”))也显示乱码,而换成QTextCodec::setCodecForTr(QTextCodec::codecForName(“UTF-8”))显示正常,就知道为什么了。
刚遇见这个问题时都不想管,怕费时间。解决过程也确实颇费周折,不过之间学到不少东西,这是最重要的。
- Qt汉字显示乱码的问题
- qt中显示汉字乱码问题
- Qt 国际化编程,真正解决汉字显示方块、乱码问题!
- 关于qt无法显示汉字的问题
- Jsp显示汉字乱码问题
- unity3d汉字显示乱码问题
- Qt 汉字乱码的分析
- QT中汉字乱码解决方案,解决汉字乱码问题
- 解决qt中文显示乱码的问题
- Html的get方式传值时,汉字显示乱码的问题
- 关于ORACLE数据库中汉字显示乱码问题的探讨
- 关于ORACLE数据库中汉字显示乱码问题的探讨
- ubuntu,flash中文汉字显示方块乱码的问题
- MySQL插入显示汉字出现乱码问题的解决
- Flash8-动态显示汉字乱码问题的解决
- 彻底解决delphi Indy10接收邮件汉字显示乱码的问题
- 彻底解决delphi Indy10接收邮件汉字显示乱码的问题
- linux,ubuntu,flash中文汉字显示方块乱码的问题
- 二维码 编码原理简介
- 微软向云靠拢 加入开放数据中心联盟
- map 取并集
- C# 高效Socket运行机制系列文章一 SocketAsyncEventArgs
- GitHub如何运作:时间并不决定一切
- Qt汉字显示乱码的问题
- iBatis多次调用同一查询语句查询时报“列名无效”无列名的错误原因及解决方法
- shell:查找本目录所有C文件中具有abcdefg字符的.c文件
- JS生成二维码,支持中文字符
- 只想 down下 manifest 中的某个 git仓库
- Linux 编程中的API函数和系统调用的关系
- 求K个最小的数
- Objective-C与JavaScript的交互
- 图片被旋转