- 1、本文档共39页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
QT编码分享分析
UNICODE版本下的展开 enum { Size = sizeof(L中文字符串ABC)/2 - 1}; static const QStaticStringDataSize qstring_literal = { -1, Size, 0, 0, sizeof(QStringData), L中文字符串ABC }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString s(holder); QString str = s; QString 内部是UTF16,如果C++编译器在编译期直接提供了UTF16的字符串,那么我们在QString内部直接保存也就够了。这样省掉存在两份不同的拷贝(即相应的转换,malloc的成本) 如何使用 #define DECLARER_CONSTSTR(name) extern const GString name; #define DEFINE_CONSTSTR(name, value) const GString name = QStringLiteral(value); 期待 C++11 QT5国际化 4. lrelease?工程文件名?csCode_zh_CN.qm QString a = MainWindow::tr(Internationalized strings); Context::tr(sourceText,comment) QString locale = QLocale::system().name(); QTranslator translator; QString name = csCode_ + locale; translator.load(name); qApp-installTranslator(translator); 3.?修改工程文件,加上TRANSLATIONS = csCode_zh_CN.ts 1. lupdate?工程文件名 2.?用linguist编辑刚生成的csCode_zh_CN.ts文件并保存 const char *b = Internationalized strings; QString a = tr(b); const char *b = QT_TR_NOOP(Internationalized strings); QString a = tr(b); 指向字符串的翻译 参考资料 /text6.html /blog/static/10011413520122110933739/ /uidid-3333427.html 百度百科 维基百科 需求背景 需求背景 GB2312支持的汉字太少 GB18030还有一个2005的版本,支持7w+的汉字 * ISO/IEC8859-1,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,加入96个字母及符号,藉以供使用变音符号的拉丁字母语言使用。 * 需求背景 需求背景 需求背景 如果不能统一源码字符集,在各个编译器之间无法保证跨平台性;如果不能保证执行字符集,则在不同的系统下,英文、中文等,会出现乱码 * * 需求背景 wchar_t跨平台性不好 * QT5编码问题分享 广联达软件股份有限公司 2013年9月23日 股票代码:002410 技术部 桌面平台组 段冰 目录 计算机编码相关 2 QT4-QT5 3 4 字符集 QT5编码问题 1 目录 计算机编码相关 2 QT4-QT5 3 4 字符集 QT5编码问题 1 big endian和little endian “汉”字的Unicode编码是6C49 字符编码、内码 计算机使用的缺省编码方式就是计算机的内码。早期的计算机使用7位的ASCII编码,为了处理汉字,有用于简体中文的GB2312和用于繁体中文的big5。 汉字编码 GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。 1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。 从ASCII、GB2312到GBK,这些编码方法是向下兼容的。区分中文编码的方法是高字节的最高位不为0。GB2312、GBK都属于双字节字符集 (DBCS)。 2000年的GB18030是取代GBK1.0的正式国家标准。该标准收录了27
文档评论(0)