QT 中文显示乱码问题

Qt中的中文显示,经常会出现乱码,但在UI设计界面上添加的中文是不会出现乱码的,如果你刚使用qt,那么你肯定会碰到这个问题。

最近用QT编程 发现QT乱码问题  .但大都说是编码问题 ,通研究分析 :出现乱码分为:

1编辑器显示乱码 ,特点是中文注释显示乱码.

解决办法:一般这种乱码是源代码由不同编辑器实现 ,出现代码不兼容 编辑器顶端会提示,然后点击右上角的编辑代码修改编码可以解决.

2软件字符乱码 一些常量  编辑器显示正常 软件运行乱码  界面显示乱码 使用此函数可以解决问题

QString::fromLocal8Bit("提示")

一下是各种乱码问题解决方案:

网上搜索一下,找到的都是这种:
#include < QTextCodec >

int main(int argc, char **argv)

{

....................

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF8"));

QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF8"));

..........................

}

Qt5中,一些函数已经被取消了,而且网上很多都是不推荐这种写法。所以当时找到的是自行转换:
    QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );

QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));

其实也可以通过QString定义的静态函数,先转换成Unicode类型:

QString::fromLocal8Bit("提示")

不过在Qt5中,提供了一个专门的处理宏,来支持中文常量,那就是QStringLiteral,但它只能处理常量。
QMessageBox::information(this, QString::fromLocal8Bit("提示"), QStringLiteral("中文显示"));

const char* info = "中文显示";

//不支持

QString strInfo = QStringLiteral(info);

//支持

QString strInfo = QString::fromLocal8Bit(info);

对于中文常量,使用QStringLiteral即可解决,对于字符串变量,使用QString自带函数也可以轻松解决。

Ubuntu 环境下Gtk与QT编译环境安装与配置 http://www.linuxidc.com/Linux/2013-08/88539.htm

Linux系统下QT环境搭建 http://www.linuxidc.com/Linux/2013-07/87576.htm

Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 http://www.linuxidc.com/Linux/2013-06/86244.htm

Ubuntu 10.04下QT4.7.4移植详解 http://www.linuxidc.com/Linux/2013-01/77930.htm

Ubuntu 14.04下安装部署Qt5开发环境 http://www.linuxidc.com/Linux/2014-05/101774.htm

Qt 的详细介绍请点这里
Qt 的下载地址请点这里

时间: 2024-08-01 22:42:59

QT 中文显示乱码问题的相关文章

Qt开发中文显示乱码

Qt开发中文显示乱码 来源 https://www.jianshu.com/p/ed269df8104d 参考 https://blog.csdn.net/J_H_C/article/details/93882284 为什么会出现乱码 首先,我们需要有的概念是乱码的问题是由编码和解码方式引起的.涉及到编码方式的地方有3个: 源码字符集 执行字符集 运行环境字符集 源码字符集确切的说是编译器认为源码文件的编码方式,执行字符集是可执行程序采用的编码方式,而运行环境字符集则是环境支持的编码方式.编译程

解决osgEarth中文显示乱码的几种方法

解决osgEarth中文显示乱码的几种方法 在此感谢那些在路上那个帮助过别人的朋友,谢谢. 方法一: 通过自己写函数转换类型. 下面这三个函数先复制过去吧. void unicodeToUTF8(const std::wstring &src, std::string& result) { int n = WideCharToMultiByte( CP_UTF8, 0, src.c_str(), -1, 0, 0, 0, 0 ); result.resize(n); ::WideCharT

将中文库导入到ARM板子中以解决中文显示乱码的教程

1.将中文字符集导入到ARM板子中的/usr/fonts/目录下 在这里我们使用的字符集为:DroidSansFallback.ttf 下载地址为:https://pan.baidu.com/s/1ARn2Y6Vh6MsRhjHP18yMwQ 中文字符集具体的导入过程如下: (1)将字符集DroidSansFallback.ttf拷贝到SD卡中. (2)在板子的/usr目录下新建文件夹fonts,同时提高文件夹的权限. 命令如下: mkdir fonts chmod 777 fonts 命令 (

Atom中文显示乱码问题 UTF-8

Atom中文显示乱码问题 本来就是UTF-8文件,但中文还是显示不了.换了GBK.GB18030也不行. 解决方法: 给atom编辑器设置字体 从菜单中打开 Edit->Open your config选项,或者Packages->Setting views->Open, 找到config.cson文件中的editor子项,或者setting views中的font-family选项,把字体设置成 文泉驿 系列字体才可以显示中文.比如: 文泉驿微米黑,文泉驛微米黑,WenQuanYi M

Qt中文显示

QT默认的编码(unicode)是不能显示中文的,可能由于windows的默认编码的问题,windows默认使用(GBK/GB2312/GB18030),所以需要来更改QT程序的编码来解决中文显示的问题. QT中有专门的一个类来处理编码的问题(QTextCodec). 在QT3中,QApplication可以设置程序的默认编码,但是在QT4中已经没有了该成员函数.可以以下的这些方法来设置编码. 1. 设置QObject的成员函数tr()的编码. QTextCodec::setCodecForTr

Linux中文显示乱码?如何设置centos显示中文

Linux中文显示乱码?如何设置centos显示中文 怎么设置Linux系统中文语言,这是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码.出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的.以centos为例,操作Linux怎么查看语言,设置修改语言 1.查看当前系统语言 登陆linux系统打开操作终端之后,输入 echo $LANG可以查看当前使用的系统语言.如 2.查看安装的语言包 查看是否有中文语言包可以在终端输入 lo

ubuntu 中用vim打开txt等文件中文显示乱码的解决方法 &nbsp;

今晚用ubuntu 12.04 的vim编辑网页代码时,发现上面的中文显示乱码.这个html文件是我之前用gedit编辑的,在gedit里面显示正常,可是在vim下显示就是乱码了. 怎么解决ubuntu中vim显示中文乱码的问题呢? 首先,添加中文字符编码: sudo gedit /var/lib/locales/supported.d/local 在打开的文件中添加下面的中文字符集 zh_CN.GBK GBK zh_CN.GB2312 GB2312 zh_CN.GB18030 GB18030

解决Sublime Text 3中文显示乱码问题(转)

解决Sublime Text 3中文显示乱码问题(转) 1.打开Sublime Text 3,按Ctrl+-打开控制行,复制粘贴以下python代码,然后回车运行. 2. 复制并粘贴如下代码: import urllib.request,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0'; pf = 'Package Control.sublime-package'; ipp = s

安装redhat时中文显示乱码(小方框)解决方法

在安装linux的时候,安装完了中文出现乱码或者是当时选错了选成了英文的,到时候中文显示乱码,下面说一下问题的解决: 在首次安装RHEL5时,如果选择的是英文,那么系统将不安装中文支持包,这样就导致了中文显示为乱码(小方框)....... 有很多人说vi /etc/sysconfig/i18n文件,其实根本就没有那个必要. 解决方法: 安装 1.fonts-chinese-3.02-9.6.el5.noarch.rpm.  如果无法安装,则加个--force 2.fonts-ISO8859-2-