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

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

2013-02-05 
unicode转码过程中遇到的问题求解决提取出简单的源码:#include qapplication.h#include QtGui#include

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已经是野指针了

热点排行