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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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中怎么把qbytearray转化为qstring

// QString(const QByteArray &ba) QString的构造函数默认就可以转换;

QByteArray baData;

QString str = QString(baData);

// 反过来转换;

QByteArray by1 = str.toLatin1();

QByteArray by2  = str.toLocal8Bit();

一. 基本概念

Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。

Qt是1991年奇趣科技开发的一个跨平台的C++图形用户界面应用程序框架。它提供给应用程序开发者建立艺术级的图形用户界面所需的所有功能。

二. 平台支持

1.MS/Windows - 95、98、NT4.0、ME、2000、XP 、 Vista、Win7、win8、win2008;

2.Unix/X11 -Linux、SunSolaris、HP-UX、CompaqTru64 UNIX、IBMAIX、SGI IRIX、FreeBSD、BSD/OS和其它很多X11平台;

3.Macintosh -Mac OS X;

4.Embedded - 有帧缓冲(framebuffer)支持的嵌入式Linux平台,Windows CE;

5.Symbian Symbian^3 Symbian Anna Symbian Belle。

参考技术A // QString(const QByteArray &ba) QString的构造函数默认就可以转换
QByteArray baData;
QString str = QString(baData);
// 反过来转换
QByteArray by1 = str.toLatin1();
QByteArray by2  = str.toLocal8Bit();

本回答被提问者采纳

以上是关于QT5中怎样把qstring转化为ASCII编码?如果字符串中含有中文的话,该怎样转换?的主要内容,如果未能解决你的问题,请参考以下文章

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

怎样将unicode转化成中文

qt 下怎么把Qstringlist 转化为Qbytearray 类型?

如何由qstring转化为char数组

qt中怎么把qbytearray转化为qstring

怎么把unsigned char数组转化为字符串类型