posts - 19,  comments - 21,  trackbacks - 0
qt对国际化有很好的支持。但默认的是unicode编码。中文系统下默认的并非unicode,
而是比如gbk或gb2312。所以在进行const char*参数传递和显示时必须特别注意。
比如在默认情况下
QMessageBox::information(this, "Test", "这是一个测试");
中文字符无法正确显式
又如
bool connect(const char * connectString);
你如果输入
QString str("一个测试");
connect((const char*)str);
默认是调用QString.latin1()方法,是直接从Unicode的QString返回latin-1字符表示
集。在中文系统下有时不是你想要的。
解决方案:在main.cpp里增加
QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());
这时涉及到QString/QCString到const char*的转换将使用本地的编码集。
类似的还有setCodecForTr()方法。

NOTE: 这跟qt使用unicode进行内部通讯、显示并不冲突。当显示一个const char*时,
qt会将const char*再行转成unicode。


另一种麻烦点的方法:

在写QT程序的时候,怎样使用中文?QT内建了国际化支持,可以使用国际化支持来实现。但,比较复烦琐,那怎么简单地使用中文呢?
QT 的QString内部是使用Unicode编码的,在写源码的时候,可以使用本地的GB2312/GBK/GB18030,或者UTF8编码。如果是使用前者的话,那可以使用QString::fromLocal8Bit("本地中文字符串")来得到想要的结果。如果是使用后者的话,可以使用 QString::fromUtf8("UTF8编码格式的中文字符串")来得到想要的结果。
posted on 2005-11-23 17:54 halCode 阅读(4871) 评论(0)  编辑 收藏 引用 所属分类: Qt编程

只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2020年9月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

常用链接

留言簿(7)

随笔分类

随笔档案

文章分类

文章档案

相册

编程资源

不务正业

找工作

搜索

  •  

最新评论

阅读排行榜

评论排行榜