MultiByteToWideChar 详解

之前经常用到看到这个API,但是中文资料的解释似乎都不太清楚也不太全。今天找了下英文资料,从MSDN上得到了详细而满意的答案。

MDN链接如下:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd319072(v=vs.85).aspx

 

int MultiByteToWideChar( 

 __in       UINT CodePage, 

__in       DWORD dwFlags, 

 __in       LPCSTR lpMultiByteStr, 

 __in       int cbMultiByte, 

 __out_opt  LPWSTR lpWideCharStr,

  __in       int cchWideChar);

 

这个方法是将一个字符串映射成为一个UTF-16的宽字符,而且这个字符串不要求一定是来自多个窄字符(char)表示的字符集(如GB2312这样的ANSI字符集),它也可以是utf-8编码表示的UNCODE这样宽字符(wchar_t)表示的字符集。换句话说,这个字符串可以是多个字节表示的ANSI编码字符串,也可以是多个字节表示的utf-8编码方式的UNICODE字符串,或者是别的编码方式表示的字符串。

 

最为重要的就是第一个参数CodePage了,这里描述得非常的清楚。这个参数是执行soruce字符串的编码类型,这样系统就知道怎么去解释和转换source字符串了。CodePage可以是当前系统默认带的utf-8,也可以是你需要安装后才能使用的gb2312等。具体的CodePage值,你可以直接指定value,CodePage list如下链接:

http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx

当然,你也可以不指定具体的codepage value, 而是指定微软提供的几个参数value,来让os根据这个参数自己来设置具体的codepage值。如你可以选择CP_ACP,这个参数的含义就是os会选择当前系统默认的ANSI code page。 但是这个默认的ANSI code page在不同机器上可能是不同的,在同一机器上也可以通过设置来更改为不同的值。例如,同一机器上你可以设置它为GB2312,你也可以设置它为BIG5。所以当你选择CP_ACP时,具体的code page是和你的系统环境相关的。

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值