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 阅读(5252)
评论(0) 编辑 收藏 引用 所属分类:
Qt编程