5、QT 中文乱码

在 Qt 代码的 const char* 这种窄字符串中使用中文就会发现显示的全是乱码.

在 Qt5 之前, 大多数人通过下面这三句代码来解决:

QTextCodec::setCodecForTr(...)
QTextCodec::setCodecForCStrings(...)
QTextCodec::setCodecForLocale(...)
 
然后这三句代码是有安全隐患的, 下面的文章都有说明:

但是在 Qt5 之后, 移除了 setCodecForTr 函数, 之前的 setCodecxxx 各种副作用都不再存在, 而且中文问题更为简单:

QString s1 = QStringLiteral("中文");
QString s2 = QString::fromWCharArray(L"中文");

这两种写法都是可以的.

 
因为在 VS 中鼓励大家使用 TEXT/_T 宏而不用L, 所以 QStringLiteral 用的相对要多点.
 

关于 Qt 中文的问题, 可参考下面两篇文章:

zz 解释QStringLiteral

QString 乱谈(3)-Qt5与中文

时间: 2024-10-26 01:31:27

5、QT 中文乱码的相关文章

Qt中文乱码问题(比较清楚,同一个二进制串被解释成不同的语言)

文章来源:http://blog.csdn.net/brave_heart_lxl/article/details/7186631 以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四

(转)QT中文乱码与国际化支持

Qt内部采用的全Unicode编码,这从根本上保证了多国语界面实现的正确性和便捷性.Qt本身提供的linguist工具,用来实现翻译过程十分方便.MFC中利用资源DLL切换资源,或使用多个RC文件进行不同语言版本编译等方法都十分麻烦,如果你曾经使用过MFC,QT解决多语言问题的便捷性绝对会让你感觉是一种享受.本文讨论以下几个方面内容: 1.  QT中解决中文乱码的方法: 2.  QT中实现国家化支持. 3.  对话框实现多语言 一.       中文乱码 1.  在程序中直接使用中文,需要在程序

解决Qt中文乱码以及汉字编码的问题(UTF-8/GBK)——ubuntu环境设置默认是utf-8,文件编码可使用Encodersoft批量转换

一.Qt环境设置 文件从window上传到Ubuntu后会显示乱码,原因是因为ubuntu环境设置默认是utf-8,Windows默认都是GBK.Windows环境下,Qt Creator,菜单->工具->选项->文本编辑器->行为->文件编码:默认编码:System(简体中文windows系统默认指的是GBK编码,即下拉框选项里的GBK/windows-936-2000/CP936/MS936/windows-936) 二.编码知识科普Qt常见的两种编码是:UTF-8和GB

Qt中文乱码解决思路

最近项目中遇到不少的Qt中文乱码的问题,主要原因是客户的需求比较多,Qt版本有用4的版本的也有用5的版本,并且还有windows与linux跨平台的需求.经常出现个问题是windows的解决了,源代码放到linux上编译不通过或者中文会乱码,本文主要是得出一个解决方案能解决Qt的中文问题,并支持不同平台与不同版本.下面我们通过下列场景中的问题来找寻答案: 场景1:Qt版本: Qt5.1.0_VS2012操作系统: win7 CPP文件编码: UTF8—无BOM格式CPP部分代码如下: QText

qt 中文乱码

 //QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); qt 中文乱码

QT 中文乱码2

以下是dbzhang关于qt中文乱码问题原因的阐述,觉得不错: 首先呢,声明一下,QString 是不存在中文支持问题的,很多人遇到问题,并不是本身 QString 的问题,而是没有将自己希望的字符串正确赋给QString. 很简单的问题,"我是中文"这样写的时候,它是传统的 char 类型的窄字符串,我们需要的只不过是通过某种方式告诉QString 这四个汉字采用的那种编码.而问题一般都出在很多用户对自己当前的编码没太多概念, 于是 一个简 单的 Qt 程序 下面这个小程序,估计大家

Qt 中文乱码解决大全

源地址:http://blog.csdn.net/xcy2011sky/article/details/7168376 解决中文乱码,最好知道乱码是什么格式比如说:utf-8. 解决方案: 1.让整个应用程序支持中文: 在  QApplication a(argc, argv);后加上以下几句话即可.要包含头文件#include <QTextCodec>. QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"

qt中文乱码

刚开始学习qt,经常会遇到中文输出乱码,在网上找了解决办法有下面这个两个办法QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));或QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8")); 我试过发现不行,然后翻阅书,发现这行代码可以在主函数里添加一行代码: QTextCodec::setCodecForTr

QT中文乱码解决方法

由于我毕设的界面是用Qt做的,之前没怎么接触过Qt,所以实现过程中遇到不少小问题,头一个就是这个. 现如今宝宝将其记录下来,供同样有需要的同学或者自己以后方便查阅. 1.所有文件编码格式须一致 不统一的话,很可能出现部分中文显示正常,部分是乱码的情况.这个我是让男票用editplus统一修改了编码格式.文件只要是自己生成的,一般都是一样的,但是也不排除某个cpp文件借鉴他人导致格式不统一.至于如何用editplus修改文件的编码格式,网上资料也不少,大家百度一下即可. 2.添加代码和头文件 我添