• 5615阅读
  • 7回复

[共享]使用QT4如何在源代码里写中文不乱码 [复制链接]

上一主题 下一主题
离线stlcours
 

只看楼主 倒序阅读 楼主  发表于: 2014-10-14
有一个终极答案,直接在源代码里写上中文字符串所对应的utf8编码。这个当然需要一个转换工具,比如:
中文“你好”转换为“\xE4\xBD\xA0\xE5\xA5\xBD”
utf8转换工具 Utf8ToHex.zip (444 K) 下载次数:18

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

只看该作者 1楼 发表于: 2014-10-15
#include <QTextCodec>

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

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

只看该作者 2楼 发表于: 2014-10-15
回 axylp123 的帖子
axylp123:#include <QTextCodec>
main.cpp
QTextCodec::setCodecForTr(QTextCodec::codecForLocale());
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
....... (2014-10-15 16:40) 

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

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


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

只看该作者 4楼 发表于: 2014-10-16
我这里写中文没出现过乱码啊?显示的都非常正常
离线dbzhang800

只看该作者 5楼 发表于: 2014-10-16
回 dygcn 的帖子
dygcn:我这里写中文没出现过乱码啊?显示的都非常正常 (2014-10-16 09:30)

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

你应该没试过:

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

只看该作者 6楼 发表于: 2014-11-30
然需要一个
离线stlcours

只看该作者 7楼 发表于: 2015-01-22
其实这个方案就是delphi的dfm所采用的方案。所以即使在ANSI时代,也不会发生编码读取错误(不是显示)的问题。delphi高瞻远瞩,佩服啊。
快速回复
限100 字节
 
上一个 下一个