qt toutf8函数_qt中的toUtf8, toLatin1, Local8bit, toUcs4(转)
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(转)相关推荐
- qt connect函数_Qt Inside信号和槽之connect
上次和大家分享的是Qt信号和槽的一些宏定义以及元对象编译器.这次和大家分享信号和槽的connect函数到底连接了什么.还有元对象编译器都生成了什么代码. 很多讲Qt信号和槽的文章都会讲到元对象编译器生 ...
- qt repaint 用法_Qt 中update()和repaint()的区别
void QWidget::repaint ( int x, int y, int w, int h, bool erase = TRUE ) [槽] 通过立即调用paintEvent()来直接重新绘 ...
- qt 复制字符串_QT中字符串的转化与拼接
先说几个相关的类: 一 .QChar QChar 类是 Qt 中用于表示一个字符的类,实现在 QtCore 共享库中.QChar 类内部用2个字节的Unicode编码来表示一个字符. 构造 QChar ...
- qt connect函数_Qt 串口上位机开发Rice 上位机 学习开发
前几天分享了一个使用C#开发的串口上位机,那么今天教你如何100行QT代码实现一个串口上位机.如果你学习过C++,那么使用QT开发软件,就不是什么大问题了,QT很多时候使用在linux上.所以使用QT ...
- qt connect函数_Qt官方示例广播发送器
❝ 本示例使用Qt Network API演示如何通过本地网络向多个客户端广播消息. ❞ 总结了下该例子的使用方法: 创建UDP套接字. udpSocket = new QUdpSocket(th ...
- json qt 解析数组_Qt中 UI文件是如何转成C++文件的
文章首发公众号:Qt那些事儿 序 UI文件为标准的XML h文件为标准的Qt语法的文件. 先思考一分钟:如何让你来设计,你如何做转化? 过程 其实过程很简单 读取ui文件(即xml) -> 经过 ...
- esc键 qt 退出菜单_Qt中Esc键触发事件处理
有一段时间没有使用Qt开发,最近给公司写的小DEMO中,用到了Qt编写的界面,其中有几处用到Event处理,在编写对Esc键处理的过程中,发现closeEvent无效,最终发现了两种解决办法. 1.重 ...
- qt 判断路径非英文符号与非英文字符_Qt中,软件多语言国际化翻译的方法与步骤...
总第23篇 在Qt的项目开发过程中,有时软件要翻译成多语言版本,这就涉及到国际化方面的操作.虽然Qt对这方面集成了很多工具,操作起来比较方便,本文还是总结一下国际化的方法和步骤,用以备忘和参考. 我们 ...
- qwidget show 是否有信号_QT中的消息传递与函数回调机制:信号(signal)和槽(slot)...
Qt是一个跨平台的C++应用程序开发框架,被广泛用于开发GUI程序. 信号和槽是Qt的核心,就相当于MFC的消息传递和回调函数一样.只不过功能比MFC 消息处理的机制和回调函数更强大.GUI应用程序要 ...
最新文章
- 美国星巴克肯德基明年将支持Apple Pay
- linux efi不要boot目录,LINUX下EFIBOOTMGR的使用,删除UEFI主板多余启动项和添加启动项-Go语言中文社区...
- MMIX机器简要介绍
- 让软件不在添加删除程序_功能强大却鲜为人知的四款软件,一但发现就无法自拔...
- endl与'\n'的区别
- win7 64 php mysql_win7 64 搭建 64 位 apache httpd php mysql
- 今天需要修复的bug
- MySQL高阶面试题
- 《南明史》txt版本
- python执行原理是什么意思_简述Python程序的执行原理。
- mysql load 忽略错误_mysql load data遇到的两个错误和解决方法
- Windows服务详解
- PMP-项目沟通管理
- 前端学习路线之html5 (一)
- Google新一代操作系统Fuchsia详解
- 计算机系统实验-缓冲区炸弹
- Hyperlynx使用心得
- 聊天页面(vue、语音发送、websocket等)
- 【冒泡排序Java版】
- 最简单的Lambda入门教程