首先需要用到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互转的更多相关文章

  1. utf8 gbk 互转

    public static function utf8_to_gbk($utfstr) { return iconv("utf-8", "gbk//IGNORE" ...

  2. Golang中GBK和UTF8编码格式互转

    Golang中GBK和UTF8编码格式互转 需求 已知byte数组的编码格式转换 实现代码 package utils import ( "bytes" "golang. ...

  3. GBK编码和UTF-8编码互转的大坑

    这几天遇到一个BUG,问题很简单,解决却花了3.4天,特意记录下来. linux环境下,将默认编码设置为GBK以后,运行GBK编码的脚本,调用一个Java的jar包,然后总jar包中返回GBK字符串. ...

  4. 一个 -100.01 的double 在内存中怎么存储的. 一个中文String 在内存中占多少直接 utf-8 / GBK

    一.-100.01 的double 在内存中怎么存储的 double双精度数据类型存储格式IEEE 双精度格式为8字节64位,由三个字段组成:52 位小数 f : 11 位偏置指数 e :以及 1 位 ...

  5. UTF-8 ->GBK

    /** * GBK->UTF8 */ //方法一 旧方法 //NSString *encode1 = [@"%E6%88%91" stringByReplacingPerce ...

  6. 字符截取 支持UTF8/GBK

    );         $n = $tn = $noc = ;          || $t ==  || ( <= $t && $t <= )) {             ...

  7. Eclipse 乱码解决方案(UTF8 -- GBK)

    UTF8 --> GBK;   GBK --> UTF8 eclipse的中文乱码问题,一般不外乎是由操作系统平台编码的不一致导致,如Linux中默认的中文字体编码问UTF8, 而Wind ...

  8. 【转】Eclipse 乱码 解决方案总结(UTF8 -- GBK)

    转载自: http://www.cnblogs.com/bluestorm/archive/2012/09/20/2695567.html UTF8 --> GBK;   GBK --> ...

  9. Eclipse 乱码 解决方案总结(UTF8 -- GBK)

    UTF8 --> GBK;   GBK --> UTF8 eclipse的中文乱码问题,一般不外乎是由操作系统平台编码的不一致导致,如Linux中默认的中文字体编码问UTF8, 而Wind ...

  10. UTF-8 GBK UTF8 GB2312之间的区别和关系

    UTF-8 GBK UTF8 GB2312之间的区别和关系     UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM.是用以解决国际上字符 ...

随机推荐

  1. SQL语言基础学习

    9.26.对之前学习的知识进行一下梳理,同时结合所查资料对知识进行一次整合

  2. Kali 2017 使用SSH进行远程登录 设置 ssh 开机自启动

    一.配置SSH参数 修改sshd_config文件,命令为: vi /etc/ssh/sshd_config 输入“ /Pass ”回车搜索 找到#PasswordAuthentication no的 ...

  3. git 的学习使用记录

    git initls -ahgit add xxxgit commit -m "some message" git statusgit loggit log --pretty=on ...

  4. git安装以及初始化

    安装文档参见:https://www.cnblogs.com/ximiaomiao/p/7140456.html 注意:安装成功后,用cmd进行基本信息设置时,当出现“git不是内部或外部命令,也不是 ...

  5. Python基础理论 - 面向对象

    一 面向对象基本理论 面向过程:核心是过程,过程就是解决问题的步骤,即先干什么,再干什么 基于面向过程设计程序,就好比在设计一条流水线,是一种机械思维方法 优点:复杂的问题简单化 缺点:可扩展性差(牵 ...

  6. 段的性能统计信息v$segment_statistics

    v$segment_statistics视图记录了段的统计信息 简单的几个字段就不说了,就说最后三个吧 STATISTIC_NAME,STATISTIC#,VALUE记录了发生在表上的操作 SYS @ ...

  7. nova compute enable password injection and filesystem resize

    root@OpenstackIcehouse2:~# cat /etc/nova/nova-compute.conf [DEFAULT] compute_driver=libvirt.LibvirtD ...

  8. 使用MXNet的NDArray来处理数据

    NDArray.ipynb NDArray介绍 机器学习处理的对象是数据,数据一般是由外部传感器(sensors)采集,经过数字化后存储在计算机中,可能是文本.声音,图片.视频等不同形式. 这些数字化 ...

  9. 吴恩达机器学习笔记50-主成分分析算法(PCA Algorithm)

    PCA 减少

  10. 一些能体现个人水平的SQL语句[总结篇]

    作为一名小小的开发人员,刚入门的时候觉得很难,过了一段时间之后,发现很简单,很快就可以搞定很bug了.然而这并不能说明你就已经很牛掰了,只能说,你不了解其他太多的东西.应该说,数据库有几个共同的命令, ...