博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT中字符串及其编码
阅读量:5111 次
发布时间:2019-06-13

本文共 914 字,大约阅读时间需要 3 分钟。

(1)宏 QT_NO_CAST_FROM_ASCII

与之类似的还有QT_NO_CAST_TO_ASCII 

任何良好风格源代码或者愿意成为良好风格的源代码,都应该使用该宏。

该宏的作用在QString的Manual中有介绍:
Disables automatic conversions from 8-bit strings (char *) to unicode QStrings

其目的是,强制所有需要转换为Qt字符串的C中的const char*窄字符串都使用:

QLatin1String(const char*)

QObject::tr(const char *)
QString::fromXXXX
QTextCodec::toUnicode ( const char *)
...
不然将会编译时直接报错,比如 QString val("dbzhang800");   val = "dbzhang801";

在定义该宏的情况下,直接报错。因为没有 QString(bool) 这样的东西哈。

注意:字符串指针可能被转换成为bool或其他基本类型,而对于部分类,比如 QScriptValue,是有对应构造函数而不报告编译错误。

 参考  

(2)  MSVC 的转码动作 

不同的msvc的编译器对源代码的编码有不同处理,这里仅指msvc2008。
如果源码文件是带BOM的utf8,utf16等编码格式,它会有转码的动作。
这样一来,tr()包住的字符串将转码成时GBK、BIG5等system编码,与源文件所用的编码不同。

所以,msvc实际使用的字符和源代码中字符的编码可能不同,并且影响到程序运行setCodecForTr/setCodecForLocale/setCodecForCStrings和lingust翻译等工具

另外QT4.6中尽管简体中文的windows系统中使用gb2312,应该直接指定SYSTEM而不要指定GB2312 ,从而可以避免使用codecs插件。 

转载于:https://www.cnblogs.com/kevinzhwl/archive/2012/08/24/2655547.html

你可能感兴趣的文章
百度地图API,定位您的当前位置
查看>>
写一个jquery弹出层插件gbox,简单多功能...
查看>>
JavaScript的一些CheckData函数
查看>>
JSP 手记
查看>>
df和du显示的磁盘空间使用情况不一致的原因及处理
查看>>
[无关] 胡言乱语3
查看>>
Leetcode 29. Divide Two Integers
查看>>
thinkPHP--SQL查询
查看>>
winrar 弹窗处理
查看>>
关于IO流的抽象类
查看>>
2019.1.26
查看>>
伪静态的实现方法:IIS环境下配置
查看>>
Selenium-webdriver系列教程(三)————如何执行一段js脚本
查看>>
使用debussy完成自动仿真
查看>>
MyEclipse中Web项目的发布和运行
查看>>
【模板】最短路
查看>>
理解 Lua 的那些坑爹特性
查看>>
Windows WMIC命令使用详解(附实例)
查看>>
如何从Powerdesigner进行数据建模并生成SQL脚本
查看>>
发现微信支付bug
查看>>