在取回的结果中,如果有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;
}

UTF8与ANSI互转的更多相关文章

  1. 多字节(一般指GBK) utf8 Unicode 编码互转

    // c:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\WinNls.h #define CP_ACP 0 // default to ANS ...

  2. utf-8转换为ansi和修改文件名的批处理(可解决source insight中文注释乱码问题)

    source insight中文乱码有两个原因,一个是source insight的设置不正确.另外一个原因是源文件是utf-8格式的. 最近在工作中用source insight 查看jsp文件.j ...

  3. C++中字符编码的转换(Unicode、UTF-8、ANSI)

    C++的项目,字符编码是一个大坑,不同平台之间的编码往往不一样,如果不同编码格式用一套字符读取格式读取就会出现乱码.因此,一般都是转化成UTF-8这种平台通用,且支持性很好的编码格式. Unicode ...

  4. 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)

    Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...

  5. UTF-8 Unicode ANSI网页编码的区别

    1.ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也 ...

  6. 关于ASCII、GB231、GBK、UTF-8/UTF8、ANSI、unicode的学习笔记

    继续上次的学习内容,写一些自己学习的笔记吧!总是觉得没有笔记的学习总是不那么踏实,我承认自己是个记忆力很差的人,特别羡慕那些可以把自己学过的东西记得很牢靠的人.哎!可惜我不是,那只能做出来点东西,就算 ...

  7. [转](SQL Server) Convert a File from utf-8 to ANSI (such as Windows-1252)

    本文转自:https://example-code.com/sql/charset_convert_file_from_utf8_to_ansi.asp CREATE PROCEDURE Chilka ...

  8. js实现unicode码字符串与utf8字节数据互转

    js的string变量存储字符串使用的是unicode编码,要保存时必须选择其他编码后进行传输,比如转成utf-8,utf-32等.存储到数据库中为utf-8编码,读取出来如何转换成正确的字符串就成了 ...

  9. UTF-8和GB2312互转的最简单快捷的方法

    一.如果你想把utf-8转为GB2312 1.用记事本打开源码,把<meta http-equiv="Content-Type" content="text/htm ...

随机推荐

  1. 苏D_8M150

    20161226 麦德龙 西边 弄堂 前车 转弯 刹车,我 刹车,下雨路滑,滑到.没撞到前车.车型号没看...只记了车牌... 右手撑了一下,肩膀估计是撑伤了,举起来 比较疼... 不知 该如何处理, ...

  2. Django-4 模板层

    你可能已经注意到我们在例子视图中返回文本的方式有点特别. 也就是说,HTML被直接硬编码在 Python代码之中. def current_datetime(request): now = datet ...

  3. python自学-day2(变量、if条件判断、运算符操作)

    1.变量 变量只是用于保存内存位置,将变量存储在内存中的作用,方便后面调用,这意味着,在创建变量时会在内存中开辟一个空间. 变量命名规则: 由字母.数字.下划线(_)组成 不能以数字开头 不能使用 P ...

  4. Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32)

    Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32) 作者:猾蚁 QQ:7376220一.Bootloader 程序1. 准备好升级程序项目,可以使用 STM32 ...

  5. android shape.xml 属性详解

    转载源:http://blog.csdn.net/harvic880925/article/details/41850723 一.简单使用 刚开始,就先不讲一堆标签的意义及用法,先简单看看shape标 ...

  6. (转)Nmap命令的29个实用范例

    Nmap命令的29个实用范例 原文:http://os.51cto.com/art/201401/428152.htm Nmap即网络映射器对Linux系统/网络管理员来说是一个开源且非常通用的工具. ...

  7. Swift-数组

    1.数组的定义  //OC 使用[]定义数组,Swift一样,但是没有@ //自动推导的结果[String]->表示数组中存的都是String //跟OC中的数组指定泛型类型  //Swift ...

  8. 你真的了解 advice, joinpoint,pointcut,aspect吗?

    假设我们有一个很普通的Employee类,在某些方法被调用时,这个类里的方法也被调用. class Employee{ public String getName(int id){....} priv ...

  9. maven常用依赖

    HttpServletRequest HttpServletResponse <dependency> <groupId>javax.servlet</groupId&g ...

  10. ngnix 反向代理

    1       课程目标 掌握nginx+tomcat反向代理的使用方法. 掌握nginx作为负载均衡器的使用方法. 掌握nginx实现web缓存方法. 2       nginx介绍 2.1    ...