zoukankan      html  css  js  c++  java
  • UTF8与ANSI互转

    在取回的结果中,如果有Unicode字符,用printf来打印的话,则会出现乱码。
    通过这个方法,可以判断是否为unicode字符,是的话,通过wprintf来打印。
    1、判断字符串是否为Unicode的方法
    不用判断,在xmlhttp.send中发送的代码都经过utf8编码

    2、将UTF8转化为ANSI编码的方法,
    UTF8中一个中文字有三个字节去表示,而ANSI中一个中文字是二个字节表示。

    BOOL Utf8ToAnsi(LPCSTR lpcszStr, char* lpwszStr, DWORD dwSize)
    {
        DWORD dwMinSize;
        WCHAR* strTmp ;
        dwMinSize = MultiByteToWideChar (CP_UTF8, 0, lpcszStr, -1, NULL, 0);
        strTmp = new WCHAR[dwMinSize];
        if(dwSize < dwMinSize)
        {
            return FALSE;
        }
        MultiByteToWideChar (CP_UTF8, 0, lpcszStr, -1, strTmp, dwMinSize); 

        int   targetLen=WideCharToMultiByte(CP_ACP,0,(LPWSTR)strTmp,-1,(char   *)lpwszStr,0,NULL,NULL); 
        WideCharToMultiByte(CP_ACP,0,(LPWSTR)strTmp,-1,(char   *)lpwszStr,targetLen,NULL,NULL); 
        return TRUE;
    }

    int AnsiToUtf8()//测试
    {
        char   str   [   256   ]   =   "c 的目录"   ;   //一段UTF-8编码    
        WCHAR*   strA;    
        int   i=   MultiByteToWideChar   (   CP_ACP   ,   0   ,(char*)   str   ,-1   ,NULL,0);    
        strA   =   new   WCHAR[i];    
        MultiByteToWideChar   (   CP_ACP   ,   0   ,(   char   *   )   str,   -1,   strA   ,   i);    

        i=   WideCharToMultiByte(CP_UTF8,0,strA,-1,NULL,0,NULL,NULL);    
        char   *strB=new   char[i];    
        WideCharToMultiByte   (CP_UTF8,0,strA,-1,strB,i,NULL,NULL);    
        //strB即为所求    
        return   0;
    }

  • 相关阅读:
    No module named 'pydispatch'
    python 安装 vrml
    python3.7 安装pyopengl,环境搭建
    机智人 激光雷达 配置
    ubuntu server 16.04(amd 64) 配置网桥,多网卡使用激活
    ubuntu server 多网卡
    ubuntu16.04中开启和关闭防火墙
    c++ 判断给定区间是否是一个heap. O(N) (is_heap)
    c++ 判断容器A是否是容器B的子集,如果是,返回true(includes)
    c++ 容器元素填充指定数量的元素(generate_n)
  • 原文地址:https://www.cnblogs.com/tibetanmastiff/p/3621607.html
Copyright © 2011-2022 走看看