QTextCodec *codec = QTextCodec::codecForName("GBK"); QString string = codec->toUnicode(encodedString); 1. 2. 3. 同样的,如果现在有一组unicode字符串需要转为GBK码数据,那么就是这样: QString string = "..."; QTextCodec *codec = QTextCodec::codecForName("GBK"); QByteArray encodedString ...
由上面fromUtf8()可知,QString需要执行字符集编码为utf-8,然后以utf-8进行解码,再编码为utf-16才能获得正确的字符编码。显示中文乱码的原因其实就是QString转码方式与执行字符集不一致。(比如,源字符集为本地字符集GBK编码,QString以utf-8的方式进行解码,会导致获得错误的二进制编码,再将错误二进制转为utf-16就...
QTextCodec *pGBK = QTextCodec::codecForName("GB18030");//fromUnicode可以拿到QString在相应编码下的QByteArrayqDebug()<<pGBK->fromUnicode(str);//方法非常简单,直接把源QString传进来,用相应编码QTextCodec调用fromUnicode即可得到std::stringstring= pGBK->fromUnicode(str).data(); std::cout<<string;...
如果你是想在代码中做静态的QString,可以这样QString t = QString::fromLocal8Bit("中文");这样得到的t应该是unicode的,然后可以t.toUtf8()得到一个QByteArray的类。当然反过来也可以用QString::toLocal8Bit()得到QByteArray,再用QByteArray下的data()函数,得到char*。不太理解你的意思额。
//对应编码为: 0xB0A1 0xB9FEQTextCodec*gbk=QTextCodec::codecForName("gbk");QString unicode=gbk->toUnicode(str.toLocal8Bit());//通过gbk编码对象将啊哈转为utf-16QTextCodec*utf8=QTextCodec::codecForName("UTF-8");QByteArray arr=utf8->fromUnicode(unicode);//从Unicode编码转为自身编码类型...
1 #ifndef _QT_GBK_H 2 #define _QT_GBK_H 3 4 5 #include <QString> 6 #include <QTextCodec> 7 #include <string> 8 using std::string; 9 10 class GBK 11 { 12 public: 13 // QString(Unicode) -> std::string (GBK) 14 static string FromUnicode(const QString& qstr) ...
gb2312是GBK的子集,通常设成哪个都一样的 所谓的QString转char*,结果并不相同,根据编码格式不同而不同 QString转unicode,不用转,QString本身就是unicode QString的根本是QChar数组,但不是以0结尾,有大小,QChar的根本是ushot Qt中unicode声明:可以用wchar_t,也可以用ushot,没有WCHAR ...
1.使用QString::fromLocal8Bit方法 该方法可以将本地编码(如GBK)的字符串转换成Unicode编码的QString对象,进而在Qt界面中显示。 示例代码如下: ui->label->setText(QString::fromLocal8Bit("你好")); 注意:fromLocal8Bit方法假定传入的字符串是以系统本地编码(在Windows上通常是GBK或GB2312)编码的。如果系统...
使用QTextCodec的fromUnicode和toUnicode方法,结合适当的编码名称("UTF-8"和"GBK"),可以实现编码的转换。但注意,fromUnicode实际上是将Unicode(QString内部使用的)转换为指定编码的字节数组,而toUnicode则是将指定编码的字节数组转换为Unicode。因此,在UTF-8到GBK的转换中,我们主要使用fromUnicode(但实际上是先通过toUni...