中文编码-linux/XP/Win7等相关
昨天偶尔到客户现场,发现一个以前的QT项目的一个问题:调度程序在现场设备上(linux内核裁剪)和管理机器(WinXP系统)上运行都没有问题,用我随身带的笔记本(Win7)运行时出现问题:一些场景的中文变为乱码,一些场景的中文则显示正常。
回来后检查代码后确定了几个方面:
1、代码中使用GBK编码-最初约定,涉及多方面;
2、本地化方面有一些问题--部分地方存在tr内有中文的现象,这些地方无论是否翻译(lupdate 和lrelease)在win7下都是乱码;用英文经过本地化翻译的地方则没有问题;(这点也是个提醒)
3、一些从网络或文件中接收读取到的中文内容在win7下显示乱码(经过QString::fromLocal8Bit处理);
4、UI中的中文无论在哪个系统下均正常(UTF-8)
因为没用过win7,搞不清楚问题出在哪,开debug一检查,立马就发现:
在win7下 :
QTextCodec *codec = QTextCodec::codecForName("GBK");
结果:NULL == codec
问题出在这,用QTextCodec::codecForLocale()处理一下即可。。。
大哥,你发错位置了,这里是问答区。。。
页:
[1]