中文字符串ANSI转UTF8的有关问题
中文字符串ANSI转UTF8的问题本人在Linux ARM平台下用Qt4.7操作一IC卡读卡器,该读卡器要求写入或传回的数据
中文字符串ANSI转UTF8的问题
本人在Linux ARM平台下用Qt4.7操作一IC卡读卡器,该读卡器要求写入或传回的数据均为ANSI格式。而我的应用程序字符编码为UTF8,这导致显示传回的数据时出了问题:英文字符都能显示,唯独中文字符全为乱码。
我在main()函数中添加下面两条语句
C/C++ code QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8")); QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
在往读卡器写入数据时,通过下面的调用能把LineEdit控件里的中文正确转为ANSI的字符。
C/C++ code //把控件中的内容转为ANSI dataLineEdit->text().toLocal8Bit().data();
但是收到传回的包含有中文的数据时,通过下面的调用显示为乱码,但英文能正常显示。
C/C++ code dataLineEdit->setText(QString::fromLocal8Bit(data));//data为接收到的数据,为ANSI的字符串
本人刚接触Qt不久,希望各位大侠不吝赐教,谢谢。
[解决办法]唉,认识字符编码,其实跟qt关系不大。需要多了解一下字符编码的知识。
其实ANSI 这个提法是很不好的,害了很多初学者。
[解决办法]传回的字符串是什么编码的?
[解决办法]跟操作系统的编码集也有关系。
我的win2003也折腾了很久。。
[解决办法]QTextCodec::setCodecForTr(QTextCodec::codecForName("gbk"));试试看
[解决办法]试一下
dataLineEdit->setText(QString::fromAscii(data));//data为接收到的数据,为ANSI的字符串
既然是ANSI,怎么能用QString::fromLocal8Bit