1 首先说下字符集。

gb18030字符集兼容了gbk字符集,以两个字节表示一个文字。windows系统可能使用的就是这两种的一种。

unicode字符集以2个或以上的字节表示一个汉字。

通用字符集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集。UCS-2用两个字节编码,UCS-4用4个字节编码。

utf8字符集以2个或以上的字节表示一个汉字。实际上具体的数值和unicode有很大的相关性。

ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF。亦称为Latin1。

2 QString内部可能是使用unicode字符集来存储文字。具体输出的时候,就可以输出该文字对应的unicode, ucs4, utf8, gb18030的编码。

3 代码示例

使用qtcreator创建main.cpp,它默认代码里的汉字使用utf8字符集。不要使用msvc编译器,因为它默认汉字使用gb18030字符集

#include #include

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QString tmp="汉字";

qDebug()<< "tmp=" << tmp <

qDebug()<< "toUtf8" << tmp.toUtf8() << endl; //返回utf8编码的一串数字

qDebug() << "toLatin1" << tmp.toLatin1() << endl; //"汉字"不在latin1字符集中,所以结果无意义(为??)

char *p = new char[1+strlen(tmp.toLatin1().data())];

strcpy(p, tmp.toLatin1().data());for (int i=0; p[i] != '\0'; i++)

{

printf("0x%02x", p[i]);

}

printf("\n");deletep;

qDebug()<< "toLocal8bit" << tmp.toLocal8Bit() << endl;//返回windows操作系统设置的字符集gb18030的编码.解决中文乱码的一种方式:myBtn->setTesxt(QString::fromLocal8Bit("中文");

qDebug() << "toUcs4" << tmp.toUcs4() << endl; //返回ucs4编码组成的QVector,一个汉字占用4字节 returna.exec(); }

qt toutf8函数_qt中的toUtf8, toLatin1, Local8bit, toUcs4(转)相关推荐

  1. qt connect函数_Qt Inside信号和槽之connect

    上次和大家分享的是Qt信号和槽的一些宏定义以及元对象编译器.这次和大家分享信号和槽的connect函数到底连接了什么.还有元对象编译器都生成了什么代码. 很多讲Qt信号和槽的文章都会讲到元对象编译器生 ...

  2. qt repaint 用法_Qt 中update()和repaint()的区别

    void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘 ...

  3. qt 复制字符串_QT中字符串的转化与拼接

    先说几个相关的类: 一 .QChar QChar 类是 Qt 中用于表示一个字符的类,实现在 QtCore 共享库中.QChar 类内部用2个字节的Unicode编码来表示一个字符. 构造 QChar ...

  4. qt connect函数_Qt 串口上位机开发Rice 上位机 学习开发

    前几天分享了一个使用C#开发的串口上位机,那么今天教你如何100行QT代码实现一个串口上位机.如果你学习过C++,那么使用QT开发软件,就不是什么大问题了,QT很多时候使用在linux上.所以使用QT ...

  5. qt connect函数_Qt官方示例广播发送器

    ❝ 本示例使用Qt Network API演示如何通过本地网络向多个客户端广播消息. ❞   总结了下该例子的使用方法: 创建UDP套接字. udpSocket = new QUdpSocket(th ...

  6. json qt 解析数组_Qt中 UI文件是如何转成C++文件的

    文章首发公众号:Qt那些事儿 序 UI文件为标准的XML h文件为标准的Qt语法的文件. 先思考一分钟:如何让你来设计,你如何做转化? 过程 其实过程很简单 读取ui文件(即xml) -> 经过 ...

  7. esc键 qt 退出菜单_Qt中Esc键触发事件处理

    有一段时间没有使用Qt开发,最近给公司写的小DEMO中,用到了Qt编写的界面,其中有几处用到Event处理,在编写对Esc键处理的过程中,发现closeEvent无效,最终发现了两种解决办法. 1.重 ...

  8. qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...

    总第23篇 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们 ...

  9. qwidget show 是否有信号_QT中的消息传递与函数回调机制:信号(signal)和槽(slot)...

    Qt是一个跨平台的C++应用程序开发框架,被广泛用于开发GUI程序. 信号和槽是Qt的核心,就相当于MFC的消息传递和回调函数一样.只不过功能比MFC 消息处理的机制和回调函数更强大.GUI应用程序要 ...

最新文章

  1. 美国星巴克肯德基明年将支持Apple Pay
  2. linux efi不要boot目录,LINUX下EFIBOOTMGR的使用,删除UEFI主板多余启动项和添加启动项-Go语言中文社区...
  3. MMIX机器简要介绍
  4. 让软件不在添加删除程序_功能强大却鲜为人知的四款软件,一但发现就无法自拔...
  5. endl与'\n'的区别
  6. win7 64 php mysql_win7 64 搭建 64 位 apache httpd php mysql
  7. 今天需要修复的bug
  8. MySQL高阶面试题
  9. 《南明史》txt版本
  10. python执行原理是什么意思_简述Python程序的执行原理。
  11. mysql load 忽略错误_mysql load data遇到的两个错误和解决方法
  12. Windows服务详解
  13. PMP-项目沟通管理
  14. 前端学习路线之html5 (一)
  15. Google新一代操作系统Fuchsia详解
  16. 计算机系统实验-缓冲区炸弹
  17. Hyperlynx使用心得
  18. 聊天页面(vue、语音发送、websocket等)
  19. 【冒泡排序Java版】
  20. 最简单的Lambda入门教程

热门文章

  1. WPF 浏览PDF 文件
  2. Android之系统自带的文字外观设置
  3. 一个JS打开链接并隐藏来源的方法
  4. 高可用性网络的简单配置方案(一)
  5. Linux启动界面切换:图形界面-字符界面(转)
  6. 再谈RPC--长长的手,抓住了离去的你
  7. 对accuracy、precision、recall、F1-score、ROC-AUC、PRC-AUC的一些理解
  8. 对TD tree的使用体验及建议
  9. MySQL之定时备份及还原
  10. mysql分类和事务回滚