环境:Qt5.2+QtCreator+VS2010,并且VS2010安装了sp1的补丁。操作系统Windowsxp。
虽然说Qt中的字符串默认提供了对uft-8的支持,但这对我们程序要正确的显示中文字符是远远不够的,要想保证程序能正确的显示中文必须保证我们程序的源码字符集和执行字符集都能支持中文(参考博文:http://blog.csdn.net/dbzhang800/article/details/7540905),因此这里给出中Windowsxp平台下怎么实现完美的中文支持。
1 源码字符集:因为是windows平台,所以源码要保存为utf-8并且带BOM的格式。
2 执行字符集:同样因为是windows平台,因此需要在使用了中文字符串的所有cpp文件中都加入#pragma execution_character_set("utf-8"),由此来保证程序的执行字符集为utf-8。注意:如果出现“未知的杂注”是因为vs2010不认识该语句,打上vs2010 sp1补丁即可。该补丁最好安装上,否则还是有乱码。感觉又被微软坑了。
按理说,按照上面的两步做完,就能支持中文字了。这里再多说一点:
不要在乱用tr了,在Qt5中我们尽量在需要用到国际化的地方使用tr,这样带来的好处只是翻译的使用能少翻译几个字符串,不是吗。另外因为Qt5中已经去掉了QTextCodec::setCodecForTr,因此如果我们仅仅用tr包裹字符串(比如:tr("序号")),而不做翻译(用Qt的Linguist翻译),显示的时候还是乱码。