发布网友 发布时间:2022-04-25 21:01
共2个回答
热心网友 时间:2023-10-15 04:58
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中写的
热心网友 时间:2023-10-15 04:58
建议改用“toLocal8Bit()"