中文QString转成char类型中造成乱码的原因
来源:互联网 发布:ubuntu vim安装包下载 编辑:程序博客网 时间:2024/05/22 10:11
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("我是汉字");
QByteArraycpath =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中文乱码
- 人力资源管理系统HRMS 天下三分 煮酒论英雄
- Linux设置环境变量小结
- C++程序设计课程主页-2012级
- 怎么读书与代码?
- FTP出现500 OOPS: cannot change directory
- 中文QString转成char类型中造成乱码的原因
- 网站设计菜鸟得到的6个惨痛教训
- Frogger 最短路变种
- 关于DOS的批处理学习过程之 四 (net命令)
- 如何设置jboss通过IP网络访问
- 关闭centos不必要的服务器,提高效率
- 深圳市内户口迁移要什么材料
- Interrupts, hardware exceptions, and signals
- java读取文件和写入文件的简单代码