当前位置: 代码迷 >> QT开发 >> linux下,Qt无法显示中文解决办法
  详细解决方案

linux下,Qt无法显示中文解决办法

热度:58   发布时间:2016-04-25 03:28:41.0
linux下,Qt无法显示中文
环境:Qt4.7.4 +fedora15英文系统
描述:目前将win7上面的qt项目移植到Fedora15上。编译后,一开始qtcreator无法输入中文,后来修改环境变量后,可以输入中文了。但是还是无法显示中文。

解决过程:
尝试1:
将fedora设置成中文系统后,将ibus设置成pinyin输入法,然后修改/etc/profile
添加下列文字:
export XMODIFIERS="@im=ibus"
export GTK_IM_MODULE=ibus
export QT_IM_MODULE=xim
export ibus &
export LC_CTYPE=zh_CN.utf8

后面就可以在qtcreator中打入汉字了。但是编译运行后,还是无法显示中文呢?

尝试2:加入中文编码
// 以下部分解决中文乱码
QTextCodec *codec = QTextCodec::codecForName("gb2312");
QTextCodec::setCodecForTr(codec);
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
// 以上部分解决中文乱码
也无法显示中文。

看来还是我系统环境支持中文有问题啊?

请各位大侠支招帮忙解决一下linux下中文无法显示的问题啊。




------解决方案--------------------
引用:
Quote: 引用:

因为你的文件源码格式不是gb2312, 需要如下修改:Tools->Options->Text Editor->File Encodeings->Default encoding->...改成GB2312
然后需要强制把你的源码save一次,譬如加个空格,然后save,就可以把源码格式改成gb2312了.


你说的这个方法,我实验过了。没有作用啊。

实际上,我就在fedora上新建立一个空qt项目,它本身编码全是UTF-8的。无法显示中文,就算都改成gb2312还是没有中文显示出来。


我就纳闷是不是我的系统环境缺了什么呢?
我是fedora15英文系统,后来手动改成中文的。
qt是linux的4.7.4源码编译的。
输入法是ibus的pinyin输入法。

貌似我自己编译的qt文件夹下,没有中文fonts。是不是这个原因啊?


看了一下你的总结文章,还不完全,补充一下:
前面freetype是解决Qt Creator显示的问题。
后面看你的备注说Linux下面源码默认是utf8,不需处理textcodec, 这个说法是不完整的。
如果你是直接在designer里面写的中文是不需要的,因为Qt会对这些文字作translate,并且显示的指定字符编码为UTF8,这样程序才能够识别,具体代码可参见ui文件生成的ui_XXXX.h.
Qt5以前的版本,QString, tr()都是默认源字符编码为lating-1(近似于ascii),所以出现在源码中的""和tr("")都是默认不支持中文到QString的转换的,这些文本必须指定全局的setCodecForCStrings之似的函数,或者在局部调用fromutf8()之类的函数调用才能正确转码到QString里。
注: QString里存贮的其实是utf16编码.

Qt5以后会把这个默认lating-1改成默认utf8,用来简化上述的处理。
  相关解决方案