unicode转码过程中遇到的问题求解决
提取出简单的源码:
#include <qapplication.h>
#include <QtGui>
#include <string.h>
#include <stdlib.h>
int main( int argc, char *argv[] )
{
QApplication application( argc, argv );
QString strSorce("4E2D56FD");
char* pch = strSorce.toAscii().data();
int n = ::strlen(pch);
QString strName;
int nLen = strSorce.length() / 4;
for (int i=0; i<nLen; i++)
{
char ach[5] = {0};
::memcpy(ach, pch, 4);
unsigned short usCode = (unsigned short)::strtoul(ach, NULL, 16);
pch += 4;
QChar qchUnicode(usCode);
strName.append(qchUnicode);
::memset(ach, 0, 5);
qDebug() << strName;
}
qDebug() << strName;
application.exec();
}
4E2D56FD unicode码对应汉字为中国;
程序运行结果只显示一个汉字,第二个显示不出来
如果改为 4E2D56FD4E2D56FD 或者别的1个或者多于两个的Unicode码,大部分时候都能正常显示汉字, 有时候运行会显示不全。
求解答!!!
[解决办法]