Unicode与ANSI字符转换

来源:互联网 发布:云计算基础设施 编辑:程序博客网 时间:2024/04/28 16:10

使用Windows函数MultiByteWideChar将多字节字符穿转换为宽字节字符串,如下:

int MultiByteToWideChar(

  UINT uCodePage,

  DWORD dwFlags,

  PCSTR pMultiByte,

  int cbMultiByte,

  PWSTR pWideCharStr,

  cchWideChar

);

nCodePage参数标识了与多字节字符关联的一个代码页值。

dwFlags参数允许我们进行额外的控制,他会影响带变音符号(如重音)的字符.但是,一般情况下都不使用这些额外标记,所以传给dwFlags的参数值是0。

pMultiByteStr参数指定要转换的字符

cbMultiByte参数指定字符串的长度(字节数),如果传给cbMultiByte参数的值是-1,函数便可以自动判断源字符的长度。

函数将转换所得的Unicode版本的字符串写入内存缓冲区,其内存地址由pWideCharStr参数指定。必须在参数cchWideChar这个缓冲区的最大长度(字符数).

 

如果调用MulttiByteToWideChar,并给cchWideChar参数传入0,函数就不会执行转换,而是返回一个宽字符数(包括终止符'\0'),只有当缓冲区能容纳该数量的宽字符是

转换才会成功。一般按照以下不讲讲一个多字节字符转换为Unicode形式.

1.调用MultiByteToWideChar,为pWideCharStr参数传入NULL,为cchWideChar传入0,为cbMutilByte传入-1

2.分配一块足以容纳转换后Unicode字符串的内存,他的大小是上一个MultiByteToWideChar调用的返回值乘以sizeof(wchar_t)

3.在次调用MultiByteToWideChar,这次将缓冲区的地址作为pWideCharStr的参数的值传入

4.使用转换后的字符串

5.释放Unicode字符串占用的内存