Qt5中文显示
解释了文字实现的过程,再来看看要怎样让Qt5实现中文输出。
先看中文的编码:
查看Qt程序的界面描述文件*.ui,发现文件头开头是
这说明UI中已经使用的是UTF8的编码格式。
查看QtCreator->工具->选项->文本编辑器->行为->文件编码
默认编码选择:UTF8
这样源码字符集就是UTF8编码
只有编码还不够,还要编码可以转换为可见的文字,于是再来看Qt5是否有对应的字体文件:
Qt5默认使用的字体文件都放在/usr/lib/fonts目录下, Qt5支持三种类型的字体,*.ttf(需要freetype支持)、*.pfa、*.qpf.
Fonts目录下有很多字体,默认都是Qt5自带的,除了qpf文件外,都可以使用桌面系统的字体查看器查看,使用字体查看器可以查看其中是否有对中文字体的支持,另外还可以使用应用程序中指定字体的方法检验字体支持:
Qt5自带的字体文件是没有中文支持的。
应为Qt5默认并不会首先匹配我们加进去的字体,所有如果程序不指定font,中文还是无法显示。
考虑到嵌入式系统的特殊性,可以在 /usr/lib/fonts 目录下只放一种字体,例如仿宋、雅黑等,这样一方面可以解决中文显示的问题,又可以减小image大小,两全其美;缺点嘛,程序不能随便用字体了,不过嵌入式嘛:)
Ps:以上同样适用于其他文字
Shell中文显示
Shell终端无法输出中文存在两个原因:
串口查看工具的编码方式不是UTF8,这种问题常见于windows机器上;
板子上的busybox不支持中文编码UTF8输出
对于原因2,解决方法是再编译busybox的使用打开Unicode的support。
为什么我打开了Unicode support 中文还是?????
原因是Busybox默认的UTF8范围只到767,而中文的最大值为U+9FA5,所以还需要修改
Range of supported Unicode characters
将其设为大于U+9FA5的值
保存设置,编译
Shel终端可以显示中文了:)
原文:http://blog.csdn.net/wisape/article/details/38494005
解释了文字实现的过程,再来看看要怎样让Qt5实现中文输出。
先看中文的编码:
查看Qt程序的界面描述文件*.ui,发现文件头开头是
这说明UI中已经使用的是UTF8的编码格式。
查看QtCreator->工具->选项->文本编辑器->行为->文件编码
默认编码选择:UTF8
这样源码字符集就是UTF8编码
只有编码还不够,还要编码可以转换为可见的文字,于是再来看Qt5是否有对应的字体文件:
Qt5默认使用的字体文件都放在/usr/lib/fonts目录下, Qt5支持三种类型的字体,*.ttf(需要freetype支持)、*.pfa、*.qpf.
Fonts目录下有很多字体,默认都是Qt5自带的,除了qpf文件外,都可以使用桌面系统的字体查看器查看,使用字体查看器可以查看其中是否有对中文字体的支持,另外还可以使用应用程序中指定字体的方法检验字体支持:
代码中加入
****为字体名称;
Qt5自带的字体文件是没有中文支持的。
从桌面系统或网上下载中文字体,例如fangsong.tty(仿宋字体),拷贝到/usr/lib/fonts目录下,先使用:
检验,结果中文字体显示正常,OK,而且是仿宋没错:)
应为Qt5默认并不会首先匹配我们加进去的字体,所有如果程序不指定font,中文还是无法显示。
考虑到嵌入式系统的特殊性,可以在 /usr/lib/fonts 目录下只放一种字体,例如仿宋、雅黑等,这样一方面可以解决中文显示的问题,又可以减小image大小,两全其美;缺点嘛,程序不能随便用字体了,不过嵌入式嘛:)
Ps:以上同样适用于其他文字
Shell中文显示
Shell终端无法输出中文存在两个原因:
串口查看工具的编码方式不是UTF8,这种问题常见于windows机器上;
板子上的busybox不支持中文编码UTF8输出
对于原因2,解决方法是再编译busybox的使用打开Unicode的support。
为什么我打开了Unicode support 中文还是?????
原因是Busybox默认的UTF8范围只到767,而中文的最大值为U+9FA5,所以还需要修改
Range of supported Unicode characters
将其设为大于U+9FA5的值
同时enable Allow wide Unicode characters on output选项
总结来说,修改内容有
Kernel 需要修改配置如下
File systems --->
DOS/FAT/NT Filesystems --->
(utf8) Default iocharset for FAT
-*- Native language support --->
(utf8) Default NLS Option
<*> Simplified Chinese charset (CP936, GB2312
<*> NLS UTF-8
make busybox-menuconfig
build/package/busybox/busybox-1.22.x.config
Busybox修改配置
Busybox Settings --->
[*] Support Unicode
(200000) Range of supported Unicode characters
[*] Allow wide Unicode characters on output
保存设置,编译
Shel终端可以显示中文了:)