QString 编码转换
参考网址:http://blog.csdn.net/lfw19891101/article/details/6641785
(网页保存于:百度云CodeSkill33 --> 全部文件 > 来自__网页 > Qt5_for_Win > QString与中文问题__20151228_1432.rar)
1、
我的测试代码:
void MainWindow::on_pushButton_clicked()
{
// ZC: char* 转为 Unicode(QString底层通过Unicode来保存字符串)
// "中间"的 utf-8 编码为 : 0xe4,0xb8,0xad,0xe9,0x97,0xb4;
char buf[7] = {0};
buf[0] = (char)0xe4;
buf[1] = (char)0xb8;
buf[2] = (char)0xad;
buf[3] = (char)0xe9;
buf[4] = (char)0x97;
buf[5] = (char)0xb4;
QTextCodec *pCodec = QTextCodec::codecForName("utf-8");
QString str = pCodec->toUnicode(buf);
//QString str = QTextCodec::toUnicode(barr);
//QString QTextCodec::toUnicode ( const char * chars ) const
qDebug() << "str : "+str; // "中间"的 gbk 编码为 : 0xd6,0xd0,0xbc,0xe4;
memset(buf, 0, sizeof(buf));
buf[0] = (char)0xd6;
buf[1] = (char)0xd0;
buf[2] = (char)0xbc;
buf[3] = (char)0xe4;
//QByteArray barr = QByteArray::fromRawData(buf, sizeof(buf));
QTextCodec *pCodec01 = QTextCodec::codecForName("gbk");
QString str01 = pCodec01->toUnicode(buf);
//QString str = QTextCodec::toUnicode(barr);
//QString QTextCodec::toUnicode ( const char * chars ) const
qDebug() << "str01 : "+str01;
//*/
} void MainWindow::on_pushButton_2_clicked()
{
// ZC: 本cpp的默认编码是utf-8的
QString str = "中间";
qDebug() << str; // ZC: 显示"中间"的 utf-8 编码的各个字符
QByteArray barr = str.toUtf8();
for (int i=0; i<barr.length(); i++)
{
int ii = barr.at(i);
ii &= 0xFF;
qDebug() << "\t" << QString::number(ii, 16).leftJustified(2, '0');
} qDebug() << ""; // ZC: 显示"中间"的 gbk 编码的各个字符
QTextCodec *pCodec = QTextCodec::codecForName("gbk");
barr = pCodec->fromUnicode(str);
for (int i=0; i<barr.length(); i++)
{
int ii = barr.at(i);
ii &= 0xFF;
qDebug() << "\t" << QString::number(ii, 16).leftJustified(2, '0');
}
}
2、
常用函数:
QString QString::fromAscii ( const char * str, int size = -1 )
QString QString::fromLatin1 ( const char * str, int size = -1 )
QString QString::fromLocal8Bit ( const char * str, int size = -1 )
QString QString::fromUtf8 ( const char * str, int size = -1 )
QString QTextCodec::toUnicode ( const char * chars ) const
3、
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
设置QString默认采用的编码。
ZC: 我觉得一般情况下,这个方式还是不要用为妙,省的改来改去 自己都搞不清了...
4、
一般来说就是源代码是GBK,就用GBK,源代码是UTF-8就用UTF-8。但有一个例外,如果你保存成了带BOM的UTF-8而且用的微软的cl编译器,此时仍是GBK。
QString 编码转换的更多相关文章
- Qt中文编码和QString类Unicode编码转换
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/g423tgl234/article ...
- Qt代码区字符编码转换
在做通讯练习的时候,发现发送给小助手字符乱码,图片如下 本人Qt Creator是UTF-8,需要改成gbk,代码如下 #include<QTextCodec> // 提供字符编码转换 Q ...
- Qt5字符串编码转换学习
目录 1.通过Python3示例探索常用字符串编码 UTF8 ANSI Unicode 小结 2.Qt5中使用QTextCodec进行编码转换 小结 1.通过Python3示例探索常用字符串编码 下面 ...
- 使用vbs脚本进行批量编码转换
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默 ...
- 关于JS的编码转换问题
在进行JS开发过程中,尤其是在开发报表时,报表已集成到Web页面中,通过在页面传递参数至报表中时,会发现有时某些参数值,传递到报表中是显示为问号或乱码等等一系列不能正常显示的情况. 这是由于浏览器和报 ...
- 帆软报表FineReport数据库连接编码转换
1. 问题描述 数据库会以某种编码方式保存与读取数据,FineReport解析时默认使用GBK字符集,若数据库端编码与设计器端编码不一致时,就会导致中文及特殊字符的乱码. FineReport在定义数 ...
- 编码转换的处理 DreamWeaver SC6 打开会出现javacsript出现问题的处理
编码转换的处理: 打开DW后,修改里面有个"页面属性": 点击页面属性,会弹出一个窗口,点击"标题/编码",在"编码"里面选择你要转换的 ...
- C++ 字符编码转换类
记录一下C++ 编码转换的函数: #pragma once #include "afx.h" #define DEFAULT_CODE 0 #define CHINESE_SIMP ...
- [2015.02.02]文本编码转换专家 v2.6
软件名称:文本编码转换专家最新版本:v2.6操作系统:XP/2003/Win7/Win2008软件介绍:文本编码转换专家,界面简洁易用,功能强大实用.自动识别文件编码,有效转换成目标编码.真正的多线程 ...
随机推荐
- selenium WebDriver处理文件下载
下载文件WebDriver 允许我们设置默认的文件下载路径.也就是说文件会自动下载并且存在设置的那个目录中.下面以FireFox 为例执行文件的下载. package com.mypro.jase; ...
- 树莓派3B新版raspbian系统换国内源
树莓派新版系统更换了专门优化过的桌面环境PIXEL,正好手头有个闲置的TF卡决定刷上新版系统玩玩.下载刷系统过程很多教程页很简单.插卡,上电开机,释放卡上的剩余空间都很正常,因为树莓派官方源访问很慢下 ...
- Docker深入浅出1
Docker是一个开源的应用容器引擎,基于GO语言并遵从apache2.0协议开源. Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的Linux机器上 ...
- Django初级手册3-视图层与URL配置
设计哲学 在Django中一个视图有指定函数和指定模版组成.对于某些特定的应用应该分成若干视图.例如博客系统 Blog主页面 详细页面入口 基于年的页面展示 基于月的页面展示 基于天的页面展示 评论行 ...
- keepalived+lvs高可用集群
LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国 ...
- jpeg exif
公司项目需要在jpeg图片里面添加exif信息,同事完成了这部分代码:但是有些手机兼容性有问题: libexif 地址:http://libexif.sourceforge.net/ 注意相关资料来之 ...
- Python之os.path路径模块中的操作方法总结
#os.path模块主要集成了针对路径文件夹的操作功能,这里我们就来看一下Python中的os.path路径模块中的操作方法总结,需要的朋友可以参考下 解析路径路径解析依赖与os中定义的一些变量: o ...
- bzoj1641 / P2888 [USACO07NOV]牛栏Cow Hurdles
P2888 [USACO07NOV]牛栏Cow Hurdles Floyd $n<=300$?果断Floyd 给出核心式,自行体会 $d[i][j]=min(d[i][j],max(d[i][k ...
- Python3.x:关于urllib中urlopen报错问题的解决方案
Python3.x:关于urllib中urlopen报错问题的解决方案 调用:urllib.urlopen(url) 报错:AttributeError: 'module' object has no ...
- java replaceAll之$替换
最近,在开发一个伪代码翻译工具的过程中,遇到个问题,我们在伪代码中使用spring EL的规则,将非变量限定在${"1"}中,解析后根据上下文的类型转换为相应的java类型.在规则 ...