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;
    }

  • 相关阅读:
    Python3与Python2的区别(转载)
    Python——通过斐波那契数列来理解生成器
    Solr4.8.1与Tomcat7整合
    Solr配置与简单Demo
    lucene 4.4 demo
    企业级搜索引擎Solr使用入门指南
    Solr使用入门指南
    使用solr搭建你的全文检索
    Solr 1.3 安装步骤
    Lucene/Solr开发经验
  • 原文地址:https://www.cnblogs.com/tibetanmastiff/p/3621607.html
Copyright © 2011-2022 走看看