当前位置: 代码迷 >> QT开发 >> unicode转码过程中遇到的有关问题求解决
  详细解决方案

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

热度:4534   发布时间:2013-02-26 00:00:00.0
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已经是野指针了
  相关解决方案