参考网址: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 编码转换的更多相关文章

  1. Qt中文编码和QString类Unicode编码转换

      版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/g423tgl234/article ...

  2. Qt代码区字符编码转换

    在做通讯练习的时候,发现发送给小助手字符乱码,图片如下 本人Qt Creator是UTF-8,需要改成gbk,代码如下 #include<QTextCodec> // 提供字符编码转换 Q ...

  3. Qt5字符串编码转换学习

    目录 1.通过Python3示例探索常用字符串编码 UTF8 ANSI Unicode 小结 2.Qt5中使用QTextCodec进行编码转换 小结 1.通过Python3示例探索常用字符串编码 下面 ...

  4. 使用vbs脚本进行批量编码转换

    使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看分析在Linux系统下开发的项目代码,我们知道Linux系统中文本文件默认编码格式是UTF-8,而Windows中文系统中的默 ...

  5. 关于JS的编码转换问题

    在进行JS开发过程中,尤其是在开发报表时,报表已集成到Web页面中,通过在页面传递参数至报表中时,会发现有时某些参数值,传递到报表中是显示为问号或乱码等等一系列不能正常显示的情况. 这是由于浏览器和报 ...

  6. 帆软报表FineReport数据库连接编码转换

    1. 问题描述 数据库会以某种编码方式保存与读取数据,FineReport解析时默认使用GBK字符集,若数据库端编码与设计器端编码不一致时,就会导致中文及特殊字符的乱码. FineReport在定义数 ...

  7. 编码转换的处理 DreamWeaver SC6 打开会出现javacsript出现问题的处理

      编码转换的处理: 打开DW后,修改里面有个"页面属性": 点击页面属性,会弹出一个窗口,点击"标题/编码",在"编码"里面选择你要转换的 ...

  8. C++ 字符编码转换类

    记录一下C++ 编码转换的函数: #pragma once #include "afx.h" #define DEFAULT_CODE 0 #define CHINESE_SIMP ...

  9. [2015.02.02]文本编码转换专家 v2.6

    软件名称:文本编码转换专家最新版本:v2.6操作系统:XP/2003/Win7/Win2008软件介绍:文本编码转换专家,界面简洁易用,功能强大实用.自动识别文件编码,有效转换成目标编码.真正的多线程 ...

随机推荐

  1. 如何用softmax和sigmoid来做多分类和多标签分类

    首先,说下多类分类和多标签分类的区别 多标签分类:一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成“人物”和“体育人物”两个标签.很显然这两个标签不是互斥的,而是有关联 ...

  2. 批量导入数据到mssql数据库的

    概述 批量导入数据到数据库中,我们有好几种方式. 从一个数据表里生成数据脚本,到另一个数据库里执行脚本 从EXCEL里导入数据 上面两种方式,导入的数据都会生成大量的日志.如果批量导入5W条数据到数据 ...

  3. background 背景图片 在IE8中不显示解决方法

    我给ul加了一个背景图片 background 火狐 ie9 ch都显示.唯独在IE8中不显示 之前的样式代码 background: url( rgba(, , , ); 在ie8中改成 backg ...

  4. SQL Server 2008 R2 超详细安装图文教程

    一.下载SQL Server 2008 R2安装文件 ed2k://|file|cn_sql_server_2008_r2_enterprise_x86_x64_ia64_dvd_522233.iso ...

  5. 消息 8101,级别 16,状态 1,第 1 行 仅当使用了列列表并且 IDENTITY_INSERT 为 ON 时,才能为表'ResourceInfo'中的标识列指定显式值。

    问题分析: 意思是你的主键是自动编号类型的,所以不能向该列插入数据. 解决办法: 执行 语句 :SET IDENTITY_INSERT CUSTOMER_TBL ON 然后在向表中插入数据,如inse ...

  6. 关于Redis-存Long取Integer类型转换错误的问题;String对象被转义的问题

    背景 最近遇到了两个Redis相关的问题,趁着清明假期,梳理整理. 1.存入Long类型对象,在代码中使用Long类型接收,结果报类型转换错误. 2.String对象的反序列化问题,直接在Redis服 ...

  7. presto 0.166概述

    presto是什么 是Facebook开源的,完全基于内存的并⾏计算,分布式SQL交互式查询引擎 是一种Massively parallel processing (MPP)架构,多个节点管道式执⾏ ...

  8. idea生成springboot jpa的实体对象

    在idea的database里面添加上数据库 File-->Project Structure Modules--->点击加号----->选择JPA  选择确认之后再主面板上就会出现 ...

  9. web前端----JavaScript的DOM(一)

    一.什么是HTML  DOM HTML  Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 HTML 文档呈现 ...

  10. $.post 和 $.get 设置同步和异步请求

    由于$.post() 和 $.get() 默认是 异步请求,如果需要同步请求,则可以进行如下使用:在$.post()前把ajax设置为同步:$.ajaxSettings.async = false;在 ...