1 第一个参数表示代码页:  CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
 CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线索ANSI代码页;
 CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换。这个代码页是什么意思?能通俗的介绍下吗?
如果要把char*转换成wchar_t* 那么用什么代码页?2 第二个参数是dwFlags
标记MB_PRECOMPOSED和MB_COMPOSITE 不是很懂 这2个是互斥的 涉及一个术语“组合字符” 就是一个基本字符和一个非空字符组成 MB_PRECOMPOSED表示组合字符有唯一的字符值 MB_COMPOSITE分别有不同的字符值 这个我有点看不懂 什么意思? 这个字符值又是何意思? 如何影响我的转换3后面的参数cchMultiByte和cchWideChar的值包括最后的'\0'吗?4从这个字面意思是“从多字节字符转换到宽字符” 我的理解 这两个是一回事吖! 有什么不同? 我从char*想转换成wchar_t* 该怎么用这个函数转换
问题多了点 请高手指点迷津

解决方案 »

  1.   

    1、代码页就是编码方式,指出多字节字符串是哪种编码,例如UTF-7、UTF-8、GB2312等,每种编码方式用一个数值表示,MSDN中有一张表可以查对应关系,CP_ACP表示当前系统默认使用的多字节字符代码页,可以在系统语言选项中修改设置,简体中文系统默认是GB2312。
    2、是指例如Ä这类字符的处理方式,MB_PRECOMPOSED是将其作为一个字符转换,MB_COMPOSITE是将其转换为A¨两个字符,如果你要转换的字符串中不存在这类字符,这两个标志用哪个都没有影响。
    3、源字符串如果指定长度为-1则必须以\0结尾,如果指定实际长度则不考虑\0,按指定长度转换;目的字符串与源字符串保持一致(要没有就都没有)。
    4、多字节字符与宽字符的编码方式不同,宽字符就是Unicode字符,每个字符用两字节表示,多字节字符的长度不固定,例如"ABC"是多字节字符串,共4个字节,分别是0x41、0x42、0x43、0,L"ABC"是宽字符串,共8字节,分别是0x41、0、0x42、0、0x43、0、0、0,使用这个函数可以把"ABC"转换为L"ABC"。多字节字符串通常定义为char*类型,宽字符串通常定义为wchar_t*类型。
      

  2.   

    1)把char *转成wchar *,一般用cp_acp就够了,这个参数使用当前系统的acp进行转换,比如在简体中文环境下,俺简体中文进行转换,如果使用特定的代码页,可以转换非系统的字符集,比如在泰文系统下指定参数为936,也可以转换成简体中文。