真正的QString转char,utf8编码转gb2312编码
公司代码有多国语言支持,遇到需要使用QString转char
网上很多人一碰到编码问题就无脑的Copy上面3行……
从Qt5开始只剩下setCodecForLocale这一个了,只是影响Qt对toLocal8Bit相关函数的编码方式
- QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
- QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
- QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));
查了一上午最终发现只需要将文本编码方式转一下就好
转自:https://blog.csdn.net/AmyAndTommy/article/details/82256454
任何编码先转换成统一编码toUnicode(),然后再转出fromUnicode();
gb2312转utf8:
QString ssss=QString::fromLocal8Bit("ceshi我是测试"); //注意此处定义gb2312编码的方式,要使用fromLocal8Bit()
gb2312ToUtf8(ssss);
utf8转gb2312:
入参是utf8编码的字符数组
(注意参数的编码格式一定要对,否则转换不出来,尤其是gb2312ToUtf8()这个函数,极为容易传入unicode编码格式的参数)
上代码:
void gb2312ToUtf8(QString strGb2312)
{
printf("@@@ gb2312 str is:%s\n",strGb2312.toLocal8Bit().data());
QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
QString strUnicode= gb2312Codec->toUnicode(strGb2312.toLocal8Bit().data());
QByteArray ByteUtf8= utf8Codec->fromUnicode(strUnicode);
char *utf8code = ByteUtf8.data();
printf("@@@ Utf8 strGb2312toUtf8:%s\n",utf8code);
}
///
void utf8ToGb2312(char *strUtf8)
{
printf("~~~~ utf8 str is:%s\n", strUtf8);
QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
QString strUnicode= utf8Codec ->toUnicode(strUtf8);
QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
strUtf8= ByteGb2312.data();
printf("~~~~~ gb2312 strUtf8toGb2312:%s\n", strUtf8);
}
修改了一下utf8ToGb2312使之转换后的gb2312字符串类型为QString:
QString utf8ToGb2312(char *strUtf8)
{
printf("~~~~utf8 strUtf8:%s\n", strUtf8);
QTextCodec* utf8Codec= QTextCodec::codecForName("utf-8");
QTextCodec* gb2312Codec = QTextCodec::codecForName("gb2312");
QString strUnicode= utf8Codec ->toUnicode(strUtf8);
QByteArray ByteGb2312= gb2312Codec ->fromUnicode(strUnicode);
strUtf8= ByteGb2312.data();
printf("~~~~~gb2312 strUtf8toGb2312:%s\n", strUtf8);
return QString::fromLocal8Bit(strUtf8);//注意这里要fromLocal8Bit()
}
转自:https://blog.csdn.net/AmyAndTommy/article/details/82256454
真正的QString转char,utf8编码转gb2312编码相关推荐
- Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题
代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局的utf-8,再用以前的方法: QByteArray ba= ...
- char qt 转unicode_Qt QString 中文 char* UTF-8 QByteArray QTextCodec unicode gb2312 GBK 乱码与转码问题...
2012-03-22 14:00 175人阅读 评论(0) 代码如下:如果不不设全局的字符集是utf-8,那么网上一般的方法是可以转的.如下程序中 #define DD 1的情况下:但是如果设置了全局 ...
- 把UTF-8编码转换为GB2312编码
最近在做的广告系统中,碰到了一个问题,广告系统采用的UTF-8编码,而一些使用这套广告系统的频道页面使用的是GB2312编码.当然也有使用UTF-8编码的频道使用这套广告系统. 频道页面是通过嵌入类似 ...
- unicode编码转gb2312编码并显示中文(cjava)
unicode编码转gb2312编码并显示中文(c&java) unicode编码与gb2312编码没有线性关系,只能通过使用编码表的方式查找. C语言 编码表中,前半部分是gb2312编码, ...
- 做网站用UTF-8编码还是GB2312编码?
经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. 经常我们打开外国网站的时 ...
- html显示蒙古语乱码,做网站用UTF-8编码还是GB2312编码?
经常我们打开外国网站的时候出现乱码,又或者打开很多非英语的外国网站的时候,显示的都是口口口口口的字符, WordPress程序是用的UTF-8,很多cms用的是GB2312. ● 为什么有这么多编码? ...
- 你还在为如何区分ASCII编码、GB2312编码、Unicod、UTF-8编码而烦恼吗,一篇文章让你柳暗花明...
字符编码 我们已经讲过了,字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题. 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特 ...
- linux 下URL中 UTF-8编码、GB2312编码与汉字之间的转换
下面是UTF-8编码的转换代码 #include <string.h> #include <stdio.h> #include <stdlib.h>/* 16进制字 ...
- 黄聪:php中utf-8模板获取GB2312编码页面传递URL中文编码转换方法
$w='中文参数'; mb_convert_encoding($w, 'gb2312', 'utf-8') 转载于:https://www.cnblogs.com/huangcong/archive/ ...
- C++将UTF-8编码的文件转化为GB2312编码
C++将UTF-8编码的文件转化为GB2312编码 我需要对一个html网页进行解析,html是使用UTF-8编码的.但是,我使用的visual Studio 19是使用gb2312进行编码的.当读入 ...
最新文章
- 在Linux添加PYTHONPATH方法以及修改环境变量方法
- Interview:算法岗位面试—10.17早上—上海某科技公司算法岗位(偏算法,独角兽)非技术面试之比赛项目讲解和项目意义的探讨
- 在MyEclipse中添加 XML Catalog (xwork-validator dtd )
- redis缓存数据表
- Linux 命令之 mv -- 移动文件/重命名文件
- 【渝粤教育】 国家开放大学2020年春季 2772家畜环境卫生与设施 参考试题
- struts config xml详细解释
- 安卓分辨率_华为平板M6会不会是最强安卓平板?
- Latex 版本简历
- 网络编程+Socket+UDP+TCP+三次握手四次挥手
- css linux 等宽字体,css 等宽字体有哪些
- C++STL常用算法adjacent_find
- springboot 加载一个properties文件转换为对象、List和Map数据结构
- 数据分析——房源分析项目
- 《信息处理技术》知识点整理
- BP客户主数据信用数据批量修改
- Numpy中outer的应用
- 嵌入式硬件基础知识汇总<附带与硬件密切相关的软件介绍>
- 猎豹移动卖资产救业绩:通过裁员降成本,海外失利转移至国内市场
- 如何让自己的网站快速被搜索引擎找到
热门文章
- disc性格测试cs适合职业_DISC性格测试,高C型的人适合从事什么工作?
- 基于巴法云平台的天猫精灵控制开关
- 怎么用计算机测出来体脂,怎么测体脂比较科学
- NANK南卡降噪耳机和小米蓝牙耳机哪个好?谁更值得入手?
- linux导航改端口波特率,各大导航端口速率修改方法
- 开瑞k50和k50s 导航傻瓜升级方法,其他车载导航也可以参考。
- 一文读懂“语言模型”
- 【ZYNQ】从入门到秃头02 ZYNQ硬件介绍和Vivado开发流程
- 全国计算机大赛游戏作品,计算机作品大赛优秀作品展示---数字动漫游戏栏目
- lnmp一键安装包 mysql_mysql - LNMP一键安装包