Qt的QString中储存汉字,如何查看汉字的编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt的QString中储存汉字,如何查看汉字的编码相关的知识,希望对你有一定的参考价值。

参考技术A QTextCodec *gbk = QTextCodec::codecForName("GBK");main函数句 QT5文用(QStringLiteral("文"); QT4文用tr("文"); 参考技术B QT就是在c++的环境下写的,支持c++代码 QString 和std:string 和char *都是可以互相转化的,你用vc能实现在QT中一样的啊

QT5中怎样把qstring转化为ASCII编码?如果字符串中含有中文的话,该怎样转换?

如题:QT5中怎样把qstring转化为ASCII编码?如果字符串中含有中文的话,该怎样转换?

QString str = "汉字";
QTextCodec *pCodec = QTextCodec::codecForName( "GBK" );

QByteArray data = pCodec->fromUnicode( str );

我估计你转化成ASCII码是指要转换成GBK编码的意思.....追问

我这样是试了下,还是不行!在QT5中!!!

追答

你的测试程序有两个问题:

    在for循环的时候,你用str.length()是不对的,str.length返回的是字的个数,str中字的个数应该是10,所以输出了10行,但是将“123wdasd汉字”转换为GBK之后,占用的字节是12个字节(也主是12个char),每个汉字是二个字节,字母和符号是一个字节。可以使用data.count()来输出,它记录的是字节的个数。

    使用%c打格式化输出有问题,它是打不出中文的。


我的测试程序中str为“汉字”,从内存编辑器中可以看出,data中的值为"babad7d6",汉字的GBK编码为0XBABA,字的GBK编码为0XD7D6,所就从内存看,是转换成功了。

本测试测试是在 Qt 5.2中写的

参考技术A 建议改用“toLocal8Bit()"

以上是关于Qt的QString中储存汉字,如何查看汉字的编码的主要内容,如果未能解决你的问题,请参考以下文章

c语言言里一个汉子占两个字节,而在qt中一个汉子占4个字节,请教大神怎么把qt中的汉字编码成两个字节啊?

hdu 1736

QT5中怎样把qstring转化为ASCII编码?如果字符串中含有中文的话,该怎样转换?

MySql 5.0 以上版本的varchar和text数据类型可以存的汉字个数

Java中的char 不能存所有的汉字

qt解析json汉字和数字一起的时候提示数据错误