中文QString转成char类型中造成乱码的原因
来源:互联网 发布:mac中.xlsx怎么打开 编辑:程序博客网 时间:2024/05/21 21:36
QString内部采用的是unicode编码,但是unicode编码有很多种,在实际应用时应制定具体的编码形式,常见的有GBK、GB2312和UTF-8等。
UTF-8是解决国际上字符的一种多字节编码,它包含全世界国家所用到的所有字符,通用性强。英文单字节表示,中文需要三个字节表示。
GBK是国家标准GB2312基础上扩容后并兼容GB2312标准,无论英文中文都用双字节来表示。GBK包含全部中文字符,是中文国家标准的一种编码方式。GB2312是简体中文的码,GBK则支持简体中文和繁体中文。
指定unicode的编码方式一般采用的方法是在main函数中添加如下语句:
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
此处指定unicode编码方式为GBK编码;
QString转换char操作为
QString path("我是汉字");
QByteArray cpath = path.toLocal8Bit(); 注意,这个QByteArray 对象一定要建立
char *p = cpath.data();
此时便完成了中文QString到char类型的转换。但是我们单步运行程序,从调试窗口中观察char中的数据,发现不是”我是汉字“,而是乱码"ÎÒÊǺº×Ö"
这时,我们就会怀疑我们的转换没有成功,其实不然。因为在我们当前所用的QT软件界面中所显示的内容是采用latin编码后的结果,而我们的QString类中的内容”我是汉字“当前采用的是GBK编码,编码结果为ce d2 ca c7 ba ba d7 d6,而这八个字节的数据在latin中就是乱码"ÎÒÊǺº×Ö",我们将cpath对象展开可看到这八个字节的数据正是ce d2 ca c7 ba ba d7 d6,所以转换正确。
- 中文QString转成char类型中造成乱码的原因
- 中文QString转成char类型中造成乱码的原因
- 中文QString转成char类型中造成乱码的原因
- exp/imp造成存储过程中文乱码的原因
- QString和char*的汉字乱码问题
- QT中文的 QString 与 char* 转换
- 包含中文的QString 转 char*
- QT 将含有中文字符的QString转化为char*类型
- QString转char*类型
- QString类型转char*
- 'QString::QString(const char*)' is qstring.h private的原因和解决
- URL中包含中文参数造成乱码的解决之道
- “QT中QString 转const char*为乱码或为空的问题 ”之解决方案
- QString中文路径乱码的问题
- Qt中QString转char*的方法
- Qt中QString和char *的转换
- QString中文乱码
- QString中文乱码
- 【高数】导数
- 设计模式~工厂模式
- 描述一下JVM加载class文件的原理机制?
- Plan
- Moving Tables
- 中文QString转成char类型中造成乱码的原因
- linux 工具命令 之 du
- Linux shell 脚本 编写
- Android7.0(Android N)适配教程
- AnyRTC将携互动直播连线2016杭州·云栖大会
- postgres中通过触发器实现自增列
- Parser XML and insert into DB with C#
- jQuery中.bind() .live() .delegate() .on()的区别
- Linux(Centos)之安装tomcat并且部署Java Web项目