33.QT-UTF8,GBK互转
首先需要用到QString的静态成员函数来获取字符数组:
QByteArray QString::toLocal8Bit () ;
//获取字节数组对象
char * QByteArray::data (); //通过字节数组对象的成员data函数,获取char数组
QTextCodec编码类介绍
互转主要用到这个类,通过该类可以获取编码对象,其中常见支持:
- UTF-8
- UTF-16 //默认大端
- UTF-16BE //大端,大数据开头, 比如字符a=00 61
- UTF-16LE //小端,小数据开头, 比如字符a=61 00
- UTF-32
- UTF-32BE
- UTF-32LE
- GB2312
- GBK等
比如获取utf-8编码对象:
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); //获取UTF-8编码对象
示例-utf8转为GBK
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); //设置本地编码对象
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); //设置QString编码对象
//utf8向gdk转换的过程是utf8->unicode, unicode->gdk
//在PC,Unicode一般代表utf-16,而utf-8是单独列出来的
//啊的gbk编码: 0xB0A1 啊的utf8编码:0xE5958A
//哈的gbk编码: 0xB9FE 哈的utf8编码:0xE59388
char encode[]={0xe5,0x95,0x8A,0xE5,0x93,0x88}; //啊哈 utf-8编码
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); //获取UTF-8编码对象
QString unicode = utf8->toUnicode(encode,); //通过UTF-8编码对象将啊哈转为utf-16
QTextCodec *gbk = QTextCodec::codecForName("GBK"); //获取GBK编码对象
QByteArray arr=gbk->fromUnicode(unicode); //从Unicode编码转为自身编码类型(GBK)
qDebug()<<QString::fromLocal8Bit(arr); //打印GBK码
qDebug()<<arr.size();
for(int i=; i <arr.size();i++)
{
qDebug("%x",(unsigned char)arr[i]);
}
打印:

示例-GBK转为UTF8
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK")); //设置本地编码对象
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK")); //设置QString编码对象
//啊的gbk编码: 0xB0A1 啊的utf8编码:0xE5958A
//哈的gbk编码: 0xB9FE 哈的utf8编码:0xE59388
QString str="啊哈"; //对应编码为: 0xB0A1 0xB9FE
QTextCodec *gbk = QTextCodec::codecForName("gbk");
QString unicode=gbk->toUnicode(str.toLocal8Bit()); //通过gbk编码对象将啊哈转为utf-16
QTextCodec *utf8 = QTextCodec::codecForName("UTF-8");
QByteArray arr=utf8->fromUnicode(unicode); //从Unicode编码转为自身编码类型(utf-8)
qDebug()<<arr.size();
for(int i=; i <arr.size();i++)
{
qDebug("%x",(unsigned char)arr[i]);
}
打印:

33.QT-UTF8,GBK互转的更多相关文章
- utf8 gbk 互转
public static function utf8_to_gbk($utfstr) { return iconv("utf-8", "gbk//IGNORE" ...
- Golang中GBK和UTF8编码格式互转
Golang中GBK和UTF8编码格式互转 需求 已知byte数组的编码格式转换 实现代码 package utils import ( "bytes" "golang. ...
- GBK编码和UTF-8编码互转的大坑
这几天遇到一个BUG,问题很简单,解决却花了3.4天,特意记录下来. linux环境下,将默认编码设置为GBK以后,运行GBK编码的脚本,调用一个Java的jar包,然后总jar包中返回GBK字符串. ...
- 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK
一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...
- UTF-8 ->GBK
/** * GBK->UTF8 */ //方法一 旧方法 //NSString *encode1 = [@"%E6%88%91" stringByReplacingPerce ...
- 字符截取 支持UTF8/GBK
); $n = $tn = $noc = ; || $t == || ( <= $t && $t <= )) { ...
- Eclipse 乱码解决方案(UTF8 -- GBK)
UTF8 --> GBK; GBK --> UTF8 eclipse的中文乱码问题,一般不外乎是由操作系统平台编码的不一致导致,如Linux中默认的中文字体编码问UTF8, 而Wind ...
- 【转】Eclipse 乱码 解决方案总结(UTF8 -- GBK)
转载自: http://www.cnblogs.com/bluestorm/archive/2012/09/20/2695567.html UTF8 --> GBK; GBK --> ...
- Eclipse 乱码 解决方案总结(UTF8 -- GBK)
UTF8 --> GBK; GBK --> UTF8 eclipse的中文乱码问题,一般不外乎是由操作系统平台编码的不一致导致,如Linux中默认的中文字体编码问UTF8, 而Wind ...
- UTF-8 GBK UTF8 GB2312之间的区别和关系
UTF-8 GBK UTF8 GB2312之间的区别和关系 UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符 ...
随机推荐
- SQL语言基础学习
9.26.对之前学习的知识进行一下梳理,同时结合所查资料对知识进行一次整合
- Kali 2017 使用SSH进行远程登录 设置 ssh 开机自启动
一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 输入“ /Pass ”回车搜索 找到#PasswordAuthentication no的 ...
- git 的学习使用记录
git initls -ahgit add xxxgit commit -m "some message" git statusgit loggit log --pretty=on ...
- git安装以及初始化
安装文档参见:https://www.cnblogs.com/ximiaomiao/p/7140456.html 注意:安装成功后,用cmd进行基本信息设置时,当出现“git不是内部或外部命令,也不是 ...
- Python基础理论 - 面向对象
一 面向对象基本理论 面向过程:核心是过程,过程就是解决问题的步骤,即先干什么,再干什么 基于面向过程设计程序,就好比在设计一条流水线,是一种机械思维方法 优点:复杂的问题简单化 缺点:可扩展性差(牵 ...
- 段的性能统计信息v$segment_statistics
v$segment_statistics视图记录了段的统计信息 简单的几个字段就不说了,就说最后三个吧 STATISTIC_NAME,STATISTIC#,VALUE记录了发生在表上的操作 SYS @ ...
- nova compute enable password injection and filesystem resize
root@OpenstackIcehouse2:~# cat /etc/nova/nova-compute.conf [DEFAULT] compute_driver=libvirt.LibvirtD ...
- 使用MXNet的NDArray来处理数据
NDArray.ipynb NDArray介绍 机器学习处理的对象是数据,数据一般是由外部传感器(sensors)采集,经过数字化后存储在计算机中,可能是文本.声音,图片.视频等不同形式. 这些数字化 ...
- 吴恩达机器学习笔记50-主成分分析算法(PCA Algorithm)
PCA 减少
- 一些能体现个人水平的SQL语句[总结篇]
作为一名小小的开发人员,刚入门的时候觉得很难,过了一段时间之后,发现很简单,很快就可以搞定很bug了.然而这并不能说明你就已经很牛掰了,只能说,你不了解其他太多的东西.应该说,数据库有几个共同的命令, ...