Qt的跨平台特性是“一次编写,到处编译”,把Windows下写好的一个小程序源码直接复制过来尝试编译,结果遇到了各种中文乱码的问题。

系统:Mac OS,Qt版本:

出现乱码的主要原因是:中文版windows默认gbk编码,而Linux/Mac默认为utf-8编码,原先的gbk编码被utf-8的编码解释就出现了乱码。

下面是各种乱码的解决方法。

编辑器显示乱码

this->setWindowTitle("������������");
这个好解决,载入时Qt Creator会提示是否重新载入编码,选择UTF-8即可:

无法输入中文

发现无法输入中文,即便是中文输入法。解决方法参考:
https://blog.csdn.net/weixin_33762130/article/details/91960441

【偏好设置】->【环境】->【语言】下拉框,设置为Chinese(China),保存,重启即可。

编译出现warning,界面仍然乱码

编译时,所有出现中文的代码,都会出现一大堆warning:
warning: illegal character encoding in string literal [-Winvalid-source-encoding]

程序界面中的中文也仍然是乱码。

费了很大功夫,终于找到了答案,把文件编码按照如下设置即可:

以后新建项目或文件时,就直接可以正常显示中文了。

扩充知识:常见中文编码的区别

参考资料:字符编码:GBK、GB2312、UTF-8

中国人民通过对 ASCII 编码的中文扩充改造,产生了 GB2312 编码,可以表示6000多个常用汉字。

汉字实在是太多了,包括繁体和各种字符,于是产生了 GBK 编码,它包括了 GB2312 中的编码,同时扩充了很多。

中国是个多民族国家,各个民族几乎都有自己独立的语言系统,为了表示那些字符,继续把 GBK 编码扩充为 GB18030 编码。

每个国家都像中国一样,把自己的语言编码,于是出现了各种各样的编码,如果你不安装相应的编码,就无法解释相应编码想表达的内容。终于,有个叫 ISO 的组织看不下去了。他们一起创造了一种编码 UNICODE ,这种编码非常大,大到可以容纳世界上任何一个文字和标志。所以只要电脑上有 UNICODE 这种编码系统,无论是全球哪种文字,只需要保存文件的时候,保存成 UNICODE 编码就可以被其他电脑正常解释。UNICODE 在网络传输中,出现了两个标准 UTF-8 和 UTF-16,分别每次传输 8个位和 16个位。

于是就会有人产生疑问,UTF-8 既然能保存那么多文字、符号,为什么国内还有这么多使用 GBK 等编码的人?因为 UTF-8 等编码体积比较大,占电脑空间比较多,如果面向的使用人群绝大部分都是中国人,用 GBK 等编码也可以。但是目前的电脑来看,硬盘都是白菜价,电脑性能也已经足够无视这点性能的消耗了。

结论:推荐所有的网页使用统一编码:UTF-8

Qt for Mac中文显示问题相关推荐

  1. iterm2连接Mac中文显示乱码

    首先判断iterm2的编码方式 Preferences -> Profiles -> Terminal 查看iterm2的编码方式,如果不是UTF-8,则改为UTF-8. 如果还是乱码,那 ...

  2. 嵌入式Linux下Qt的中文显示

    一般情况下,嵌入式Qt界面需要中文显示,下面总结自己在项目中用到的可行的办法 1,下载一种中文简体字体,比如我用的是"方正准圆简体",把字体文件放在ARM开发板系统的Qt字库中,即 ...

  3. 解决QT5中文显示出现乱码

    Qt中的中文显示,经常会出现乱码.从网上看了一些博客,大都是Qt4中的解决方法, 网上搜到的都是这种: #include < QTextCodec > int main(int argc, ...

  4. kivy mysql_Kivy中文显示

    [Kivy中文显示]的更多相关文章 Win7系统 下载 DroidSansFallback.ttf字体(android设备上自带了) 源代码第一行增加#-*- coding:utf-8 -*- 创建w ...

  5. mysql for Mac 下创建数据表中文显示为?的解决方法

    在我的绝版Mac mini下安装了mysql 5.7版本,实例中,在通过load data 导入数据时发现表中的中文显示为  ? 通过百度,发现多个版本的解决方法,将其中一个成功解决的方法贴上来: 大 ...

  6. QT中文显示乱码解决

    问题如下: 1.中文显示乱码 2.数据库连接不上 问题一:但是如果我们的软件只运行在中文系统下,最简单的方法:在main函数中调用QTextCodec::setCodecForTr( QTextCod ...

  7. mysql for mac中文_mysql for Mac 下创建数据表中文显示为?的解决方法

    在我的绝版Mac mini下安装了mysql 5.7版本,实例中,在通过load data 导入数据时发现表中的中文显示为  ? 通过百度,发现多个版本的解决方法,将其中一个成功解决的方法贴上来: 大 ...

  8. QT + MinGW 中文显示乱码解决方案

    QT + MinGW 中文显示乱码解决方案 1.将cpp文件从使用UTF-8改为使用UTF-8-BOM编码方式,中文就可以显示了! 2.代码如下: DialogInput Input(QString: ...

  9. [转载]Qt之中文显示(QMessageBox、QLineEdit右键菜单等)

    原文地址:Qt之中文显示(QMessageBox.QLineEdit右键菜单等)作者:一去丶二三里 在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键 ...

最新文章

  1. 什么是PRD、MRD与BRD?
  2. Apache+jboss群集部署
  3. python初学者代码示例_python实现手势识别的示例(入门)
  4. mysql数据库三大引擎优缺点
  5. hdu5693 D gamehdu 5712 D++ game
  6. 个人自媒体博客整站模板
  7. 校招对项目实战要求分析
  8. 8202v/8202ka/8202kd/8202rd 无线游戏手柄方案
  9. java反射用法示例_Java反射示例教程
  10. javamailsender注入失败_使用Spring3.x框架的java mail支持来发送邮件
  11. DoEvents应用
  12. 谷歌怎么保存网页为图片?
  13. zotero+坚果云
  14. 金融科技数据中台基于 DolphinScheduler 的应用改造
  15. k8s存储+storageclass自动创建pv+StatefulSet自动创建pvc
  16. 开源PLM软件Aras详解七 在Aras的Method中如何引用外部DLL
  17. C# 3个可乐瓶可以换一瓶可乐,现在有364瓶可乐。问一共可以喝多少瓶可乐,剩下几个空瓶! 案例
  18. 3.4 常用类库-多线程
  19. C#使用wps转pdf
  20. 数据结构 时间复杂度 空间复杂度 一看就懂版本

热门文章

  1. 基于Netty的联机版坦克大战
  2. 奇瑞a3中控按键图解_奇瑞A3空调三个键中间键是如何使用?
  3. 计算机考研要准备哪些准备,大三 计算机科学与技术 要考研 要做哪些准备了?...
  4. CMS知识小结及wordpress的安装与漏洞复现
  5. 最新泛微E-office10.5 泛微Eoffice V10.5 泛微E-office10.0 Eoffice10.0 泛微E-offic95 泛微Eoffice9.0 8.0 泛微行政事业V10.0
  6. 如何准备机器学习数据集_数据准备技术及其在机器学习中的重要性
  7. 远景阿波罗光伏助力苹果供应商清洁能源计划
  8. 【Web3 系列开发教程——创建你的第一个 NFT(6)】为 NFT 设置价格
  9. 两大公链相继发生变故,公链故事难再续?
  10. 计算机硬件软件分析图,中国工业软件产业链全景图布局及企业分析