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 代码示例

环境:qt5.5 msvc2013

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

[cpp]  view plain  copy
  1. #include <QCoreApplication>  
  2. #include <QDebug>  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     QCoreApplication a(argc, argv);  
  6.     QString tmp="汉字";  
  7.     qDebug() << "tmp=" << tmp << endl;  
  8.     qDebug() << "toUtf8" << tmp.toUtf8() << endl;       //返回utf8编码的一串数字  
  9.     qDebug() << "toLatin1" << tmp.toLatin1() << endl;   //"汉字"不在latin1字符集中,所以结果无意义  
  10.     char *p = new char[1+strlen(tmp.toLatin1().data())];  
  11.     strcpy(p, tmp.toLatin1().data());  
  12.     for (int i=0; p[i] != '\0'; i++)  
  13.     {  
  14.         printf("0x%02x ", p[i]);  
  15.     }  
  16.     printf("\n");  
  17.     delete p;  
  18.     qDebug() << "toLocal8bit" << tmp.toLocal8Bit() << endl;//返回windows操作系统设置的字符集gb18030的编码  
  19.     qDebug() << "toUcs4" << tmp.toUcs4() << endl;           //返回ucs4编码组成的QVector,一个汉字占用4字节  
  20.     return a.exec();  
  21. }  
运行结果如下图:



from: http://blog.csdn.net/u010607621/article/details/50321915




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值