读书人

unicode转码过程中遇到的有关问题求解

发布时间: 2013-02-05 10:40:57 作者: rapoo

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码,大部分时候都能正常显示汉字, 有时候运行会显示不全。

求解答!!!
[解决办法]

引用:
提取出简单的源码:

#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);

这条语句结束时,你的pch已经是野指针了

读书人网 >QT开发

热点推荐