首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt unicode变换db2312后显示问号

2013-10-01 
Qtunicode转换db2312后显示问号Qtunicode转换db2312后显示问号,为什么?我的开发环境ubuntu + QtQtUbuntu[

Qt unicode转换db2312后显示问号
Qt  unicode转换db2312后显示问号,为什么?我的开发环境ubuntu + Qt Qt Ubuntu
[解决办法]
转换出来时??也就是16进制3f3f,这表示你的转码过程中信息丢失了。或者说源字符串编码信息丢失了。
如果你确信这个unicode是正确的,可以一步步打印出来看看。简单来说这样做:
假设你的源字符串是UTF-8编码的汉字,如:"南",UTF-8编码是:E58D97, 假设你QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8");
那么 QString str1="南";
qDebug()<<"HEX of original UTF8:"<<str1.toAscii().toHex() 应该是E58D97
QByteArray targetStr = QTextCodec::fromUnicode(str1);
qDebug()<<"HEX of GB2312:"<<targetStr.toHex(); 应该是:C4CF
不放心自己的源码文件编码类型的可以这么做:
QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8");
QString str1=QObject::tr("南");
qDebug()<<"HEX of original UTF8:"<<str1.toAscii().toHex() 应该是E58D97
QByteArray targetStr = QTextCodec::fromUnicode(str1);
qDebug()<<"HEX of GB2312:"<<targetStr.toHex(); 应该是:C4CF

热点排行