关于编码简介:ascii编码是最开始的编码规则本,里面只收纳了英文、特殊字符、数字等有限字符,采用的是8位一个字节的方式进行编码对照;unicode在ascii码的基础上进行了升级扩展,立志将全世界所有国家的语言文字等字符都编进去,故又被称为万国码;unicode采用的编码方式为统一四字节表示一个字符;由于unicode采用的是四个字节表示一个字符这种方式极大地浪费了资源和空间,所以又出现了对unicode进行优化且兼容ascii码的utf-8,又称为可变长度字符编码,采用的规则是英文使用一个字节去表示(也就是兼容了ascii码在内),中文则是三个字节去表示一个字符

1. QString 转 string

 QString qstr = "测试";
string str = qstr.toStdString();

在qt4中,QString::toStdString() 转的string的编码是Unicode

需要转unicode编码的string,用toStdString(),需要转utf-8编码的string,用

 QString qstr = "测试";
string str = qstr.toUtf8().data();

在qt5中,QString::toStdString()转的string的编码是utf-8

需要转unicode编码的string,用

 QString qstr = "测试";
string str = qstr.toLocal8Bit().data()

需要转utf-8编码的toStdString()

 QString qstr = "测试";
string str = qstr.toStdString();

2. string 转 QString

因为在qt4和再qt5中的QString::fromStdString()的编码格式的改变,转QString略有不同。

在qt4中:utf-8 string 转QString

 string str = "测试";
QString qstr =QString::fromUtf8(str.c_str());

Unicode  string 转 QString

 string  str = "测试";
QString qstr = QString::fromStdString(str);

在qt5中:utf-8 string 转QString

 string  str = "测试";
QString qstr = QString::fromUtf8(str);

Unicode  string 转 QString

 string  str = "测试";
QString qstr = QString::fromStdString(str);

3. string 转 char*

 string str = "测试";
char* ch = str.c_str();

4. char* 转 string

 char* ch = "测试";
string str = ch;

QString,string,char* 在utf8和gbk不同编码下的相互转化的更多相关文章

  1. 【miscellaneous】【C/C++语言】UTF8与GBK字符编码之间的相互转换

    UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 CChineseCode 一 预备知识 1,字符:字符是抽象的最小文本单位.它没有固定的形状(可能是一个字形),而且没有值." ...

  2. python中unicode、utf8、gbk等编码问题

    转自:http://luchanghong.com/python/2012/07/06/python-encoding-with-unicode-and-gbk-and-utf8.html 概要:编码 ...

  3. (转载)UTF-8和GBK的编码方式的部分知识:重要

    GBK的文字编码是双字节来表示的,即不论中.英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1. 至于UTF-8编码则是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节) ...

  4. Unicode ,UTF-8,assic, gbk, latin1编码 的区别

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...

  5. 字符编码之间的相互转换 UTF8与GBK(转载)

    转载自http://www.cnblogs.com/azraelly/archive/2012/06/21/2558360.html UTF8与GBK字符编码之间的相互转换 C++ UTF8编码转换 ...

  6. UTF-8和GBK有什么区别

    UTF-8和GBK有什么区别 2017年06月03日 18:10:43 阅读数:6516 GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准).GBK编码专门用来解决 ...

  7. UTF-8和GBK的区别

    GBK是在国家标准GB2312基础上扩容后兼容GB2312的标准(好像还不是国家标准).GBK编码专门用来解决中文编码的,是双字节的.不论中英文都是双字节的. UTF-8编码是用以解决国际上字符的一种 ...

  8. QString, string, int, char* 之间相互转换

    这三种数据类型在实际运用中经常需要互相转换,那么这里小结下它们之间的转换方法: - Qstring & string Qt中封装的类十分强大,其成员函数数量之多比STD有过之而无不及,许多程序 ...

  9. BIG5, GB(GB2312, GBK, ...), Unicode编码, UTF8, WideChar, MultiByte, Char说明与区别

    汉语unicode编译方式,BIG5是繁体规范,GB是简体规范 GB是大陆使用的国标码,BIG5码,又叫大五码,是台湾使用的繁体码. BIG5编码, GB编码(GB2312, GBK, ...), U ...

随机推荐

  1. 中间介(MiddleWare)

    引子-Django的生命周期 在学习中间介之前,我们先来回顾一下Django的生命周期:用户发起请求,请求会被发送到urlconf中的url,然后会指向对应的views函数进行处理,views函数处理 ...

  2. Linux 和 Windows 之间共享文件之 samba

    导语 如果对windows有过实际操作技巧的人都会明白,在windows下的文件共享加上网络驱动器映射是多么方便的体验,甚至比ftp更加的简单,就像本地多了一块可与他人交流的硬盘一样. 问题 由于性能 ...

  3. 总结几种常见web攻击手段及其防御方式

    本文简单介绍几种常见的攻击手段及其防御方式 XSS(跨站脚本攻击) CSRF(跨站请求伪造) SQL注入 DDOS web安全系列目录 总结几种常见web攻击手段极其防御方式 总结几种常见的安全算法 ...

  4. XAF-由于try catch导致的性能问题一例

    前几天在制作PMMS系统时,有天突然发现性能问题下降严重,发布到客户机后,每点击一个按钮要花5-10秒的时间,与本机的200-600毫秒差距很大. 经过多处优化后没有效果. 后来想起,最近增加的功能是 ...

  5. 大神教你零基础学PS,30堂课从入门到精通

    ps视频教程,ps自学视频教程.ps免费视频教程下载,大神教你零基础学PS教程视频内容较大,分为俩部分: 大神教你零基础学PS--30堂课从入门到精通第一部分:百度网盘,https://pan.bai ...

  6. hdu2795 Billboard(线段树单点修改)

    传送门 结点中的l和r表示层数,maxx表示这层最多还剩下多少宽度.根据公告的宽度取找到可以放的那一层 找到后返回层数,并修改maxx #include<bits/stdc++.h> us ...

  7. Qt-网易云音乐界面实现-5 收藏列表,播放列表实现 QListWidget QTableWidget

    先上目前完成的内容吧,发现后面越写越多.在看看点击量,心凉凉. 完成了左侧的导航列表,还有就是右下角的播放列表. //创建的歌单 my_Create_Music_List = new QListWid ...

  8. Jmeter+Badboy安装使用文档

                  Jmeter+Badboy安装使用文档       目录   1.jmeter安装    1 2.Jmeter基础使用    3 3. 使用Jmeter进行分布式测试    ...

  9. Linux入门基础(七):Linux软件管理基础

    源代码形式 绝大多数开源软件都是直接以源代码形式发布 源代码一般会被打包成tar.gz的归档压缩文件 程序源代码需要编译成为二进制形式之后才能够运行 源代码基本编译流程 : ./configure 检 ...

  10. keyup在移动端失效解决方法

    keyup在移动端失效解决方法: $("#OBJ").on("input propertychange", function(){ }); 采用 input 与 ...