在取回的结果中,如果有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. hadoop install start-dfs.sh 失败

    linux:ubuntu 16.04 LTS hadoop version: 2.7.3 JDK: java-9-open-jdk issue: start-dfs.sh start-dfs.sh:c ...

  2. jmeter使用总结

    1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具.用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域 ...

  3. Android官方架构组件介绍之ViewModel(三)

    ViewModel 像Activity,Fragment这类应用组件都有自己的生命周期并且是被Android的Framework所管理的.Framework可能会根据用户的一些操作和设备的状态对Act ...

  4. Unity string 转换为 Quaternion

    public Quaternion QuaternionParse(string name) { name = name.Replace("(", "").Re ...

  5. ZK使用

    1. 关注问题 1. zookeeper集群如何保证请求的均匀分布? 由client建立连接时会随机取server保证均匀分布, 2.已布置完成的ZK集群如何扩容? 修改配置后逐台重启即可 2. ZK ...

  6. windows下自动更改IP的小工具(bat批处理文件)

    每次上线,都要先上灰度环境再上到正式环境.在上到灰度环境时,访问灰度环境通过自动获取IP和更改指定dns来实现.具体如何实现,大家可自行百度. 新建一个文本文档,将其后缀改为bat,打开该文件,拷贝一 ...

  7. 二叉排序树思想及C语言实现

    转自: http://blog.chinaunix.net/uid-22663647-id-1771796.html 1.二叉排序树的定义 二叉排序树(Binary Sort Tree)又称二叉查找( ...

  8. 详细记录vue项目实战步骤(含vue-cli脚手架)

    一.通过vue-cli创建了一个demo. (vue-cli是快速构建这个单页应用的脚手架,本身继承了多种项目模板:webpack(含eslit,unit)和webpack-simple(无eslin ...

  9. PrintPreviewControl

    用于按文档打印时的外观显示PrintDocument对象.此控件没有按钮或其他用户界面元素,因此通常只有在希望编写自己的打印预览用户界面时才会使用PrintpreviewControl 属性 Docu ...

  10. IIS 伪静态 脚本映射 配置方法

    首先,是IIS7.0的配置,由于Windows Server 2008操作系统默认的IIS版本为7.0,我们知道,IIS7.0与IIS6.0 核心注意的地方:先要将应用池设置为集成模式,修改OK后,再 ...