关于qt支持中文、国际化

关于qt支持中文、国际化 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编码格式的中文字符串")来得到想要的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值