我的QT程序编码设置
QT的编码是实在是个复杂的问题
我的环境,qt4.8+qtcreator2.4+vs2008+winxp(win7)
源代码文件编码,只有两个选择system或者utf8(带BOM)
初步结论:
文件篇: 开发win32程序,首选使用system(如果msvc系列,system几乎是必然;gcc系列,可以不用,但对于rc等一些特定文件,还是需要system编码)
开发 linux程序,首选utf-8 ,其他的就不用考虑了
字符串篇:(a)全面使用QString,所有能使用的地方都用QString;
(b)如果可以用英文,那就全面使用英文,避免使用non-ascii字符;而对于界面部分,则采用qm翻译方案;
(c)使用QT_NO_CAST_FROM_ASCII 和 QT_NO_CAST_TO_ASCII,禁止char*和QString隐式互转;
(d)对于用户可见/需要翻译的部分,务必使用tr/QT_TR_NOOP等
(e)对于用户不可见/不要翻译的部分,统一用Latin1,并使用QLatin1String包括
============================================
方案一:windows+qt4+msvc20xx+win32程序
源代码文件:采用system编码
其他文件:采用system编码
用户可见部分文字:用本地语言,但一定tr/QT_TR_NOOP包括。——虽然不是正统方法,但还是可以用的
用户不可见部分文字:用Latin1,并且统一用QLatin1String包括
指定QTextCodec三剑客,各种类型、函数均只使用QString
推测:在不同语言系统中应该可以正常显示,但条件所限无法测试;
---------------------------------------------------------------------------------------------
方案二:windows+qt4+gcc+win32程序
源代码:utf-8
其他文件:system或者ansi
其他同方案一
----------------------------------------------------------------------------------------------
终极方案:全面E文话
所有文件,所有内容均采用E文,也就是仅使用ascii字符
用户可见部分:采用qm翻译
所有字符串均只使用QString