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软件介绍:文本编码转换专家,界面简洁易用,功能强大实用.自动识别文件编码,有效转换成目标编码.真正的多线程 ...
随机推荐
- 使用POI读取/创建Execl(.xlsx)文件
最近项目中用到了解析Execl表格的功能,在网上百度了一下自己写了一个小Demo.由于项目中使用的是Execl2007,就是后缀为.xlsx的,所以只研究了解析和创建Execl2007的文件,解析Ex ...
- python selenium webdriver处理浏览器滚动条
用键盘右下角的UP,DOWN按键来处理页面滚动条 这种方法很灵活用起来很方便!!!! from selenium import webdriver import time from selenium. ...
- unity3d-物理引擎
简介 物理引擎就是在游戏中模拟真实的物理效果,比如,场景中有两个立方体对象,一个在空中,一个在地面上,在空中的立方体开始自由下落,然后与地面上的立方体对象发生碰撞,而物理引擎就是用来模拟真实碰撞的效果 ...
- kali linux安装及配置
kali linux用户名:root 密码:之前设置过的密码 --------------------------------------------------------------------- ...
- click 在网页测试手机模式下无效,不能执行。调成非手机模式即可
click 在网页测试手机模式下无效,不能执行. 调成非手机模式即可
- 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变
[Mysql主从复制]解决的问题数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了.负载均衡:M ...
- Mysql的序列
Mysql的序列 Mysql自带的序列:字段设置为int,属性里面选上“自动增长”即可: 在插入数据的时候可以不插入该字段的值,mysql会自动处理:
- Python 自学基础(四)——time模块,random模块,sys模块,os模块,loggin模块,json模块,hashlib模块,configparser模块,pickle模块,正则
时间模块 import time print(time.time()) # 当前时间戳 # time.sleep(1) # 时间延迟1秒 print(time.clock()) # CPU执行时间 p ...
- JavaScript 创建动态表格
JavaScript 创建动态表格 版权声明:未经授权,严禁转载! 案例代码 <div id="data"></div> <script> va ...
- luogu3935 Calculating
标题也许叫整除分块吧 求\(1\)到\(n\)因数的个数\(\sum_{i=1}^n(\sum_{d|n}1)\) 范围\(1e14\)时限3s \(n\sqrt{n}\)的暴力铁定gg 分开考虑 \ ...