查看完整版本: [-- 使用QT4如何在源代码里写中文不乱码 --]

QTCN开发网 -> Qt中文处理 -> 使用QT4如何在源代码里写中文不乱码 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

stlcours 2014-10-14 19:06

使用QT4如何在源代码里写中文不乱码

有一个终极答案,直接在源代码里写上中文字符串所对应的utf8编码。这个当然需要一个转换工具,比如:
中文“你好”转换为“\xE4\xBD\xA0\xE5\xA5\xBD”
[attachment=12728]

当然,这不是我的发明,要感谢这位仁兄:
http://download.csdn.net/download/aqtata/5596247

axylp123 2014-10-15 16:40
#include <QTextCodec>

main.cpp
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

界面可见字符串
QObject::tr("你好");
非可见比如路径
QString("图片");

dbzhang800 2014-10-15 17:12
axylp123:#include <QTextCodec>
main.cpp
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
....... (2014-10-15 16:40) 

codecForLocale() 这么用是错误的(尽管你特定平台下它可以工作,但更多的情况下它不工作)。你根据你的平台不同,应该直接用GB18030或UTF8

dbzhang800 2014-10-15 17:19
有一个终极答案,直接在源代码里写上中文字符串所对应的utf8编码。这个当然需要一个转换工具,比如:
中文“你好”转换为“\xE4\xBD\xA0\xE5\xA5\xBD”
utf8转换工具 Utf8ToHex.zip (444 K) 下载次数:0


如果源码中只有个别中文的话,这样是没问题的。如果大量的中文字符串都这么弄,这样的代码要怎么维护?

dygcn 2014-10-16 09:30
我这里写中文没出现过乱码啊?显示的都非常正常

dbzhang800 2014-10-16 09:53
dygcn:我这里写中文没出现过乱码啊?显示的都非常正常 (2014-10-16 09:30)

因为你的测试样本太少(估计你是在linux下写的代码linux下编译的,或者简体中文windows下写的代码,简体中文windows下运行的)。

你应该没试过:

1. Linux下写的代码,拿到简体中文Windows下编译运行  【编译出错 或编译通过乱码】
2, 简体中文Windows下的代码,拿到Linux编译和运行   【编译出错 或编译通过乱码】
3. 简体中文Windows下的代码,拿到非简体中文Windows下编译运行 【编译出错 或者 编译通过但运行乱码】
4. 简体中文Windows下的代码直接编译之后,拿到非简体中文Windows下运行 【乱码】
5. ...

经典的故事 2014-11-30 17:46
然需要一个

stlcours 2015-01-22 00:02
其实这个方案就是delphi的dfm所采用的方案。所以即使在ANSI时代,也不会发生编码读取错误(不是显示)的问题。delphi高瞻远瞩,佩服啊。


查看完整版本: [-- 使用QT4如何在源代码里写中文不乱码 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled