博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
33.QT-UTF8,GBK互转
阅读量:5092 次
发布时间:2019-06-13

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

首先需要用到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[6]={
0xe5,0x95,0x8A,0xE5,0x93,0x88}; //啊哈 utf-8编码 QTextCodec *utf8 = QTextCodec::codecForName("UTF-8"); //获取UTF-8编码对象 QString unicode = utf8->toUnicode(encode,6); //通过UTF-8编码对象将啊哈转为utf-16 QTextCodec *gbk = QTextCodec::codecForName("GBK"); //获取GBK编码对象 QByteArray arr=gbk->fromUnicode(unicode); //从Unicode编码转为自身编码类型(GBK) qDebug()<

打印:

 

 

示例-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()<

 打印:

 

转载于:https://www.cnblogs.com/lifexy/p/9272781.html

你可能感兴趣的文章
小白眼中的git操作
查看>>
小米笔试题--数组移动
查看>>
php gd实现简单图片验证码与图片背景文字水印
查看>>
仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'XXX'中的标识列指定显式值。...
查看>>
winform中的小技巧【自用】
查看>>
winform DataGridView的虚模式填充,CellValueNeeded事件的触发条件
查看>>
java成神之——集合框架之ArrayList,Lists,Sets
查看>>
python编程快速上手
查看>>
实验五:编写、调试具有多个段的程序
查看>>
事件代理与事件处理流程
查看>>
数据分析师
查看>>
Android 网络编程
查看>>
仰空以忧繁星,我将君心聆听,我听君心似水清,清冷好似寒冰
查看>>
mysql中的事物处理
查看>>
面向对象程序的设计模式
查看>>
dos.ORM配置和使用
查看>>
huawei交换机普通远程登陆配置
查看>>
Python学习笔记(2) Python提取《釜山行》人物关系
查看>>
SSE入门
查看>>
【linux学习笔记五】帮助命令
查看>>