33.QT-UTF8,GBK互转
2018-07-09 13:24:57来源:博客园 阅读 ()
首先需要用到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()<<QString::fromLocal8Bit(arr); //打印GBK码 qDebug()<<arr.size(); for(int i=0; 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=0; i <arr.size();i++) { qDebug("%x",(unsigned char)arr[i]); }
打印:
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:HDU2837 Calculation(扩展欧拉定理)
下一篇:c++培训还是自学
- QT5中Json文件与QString的相互转化 2020-03-19
- 宽字节UTF-8、多字节互转 2018-09-01
- DataTable与List<T>相互转换 2018-06-27
- QString, Std::string, char *相互转换 2018-06-21
- 16进制字符和图片之间相互转换 2018-06-18
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash