windows下多字节和宽字节转换

Posted 言止予思

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下多字节和宽字节转换相关的知识,希望对你有一定的参考价值。

先简单说下什么是多字节和宽字节。

多字节是指使用多个字节(1-3)表示一个字符。比如gbk使用英文占一个字节,中文占2个,这个就是多字节了。utf-8是使用1-3个字节表示字符。还有big5等等。

宽字节一般是固定使用2个字节表示一个字符,utf-16(一般就是指unicode)。

1、MultiByteToWideChar 多字节转宽字节

2、WideCharToMultiByte 宽字节转多字节

3、和utf8有关的字符转换,代码页CodePage=CP_UTF8。

4、代码页CodePage=CP_ACP,一般使用系统当前使用的代码页。比如在简体中文(中国等)区域下,CP_ACP表示gbk编码的936代码页。在繁体中文(台湾),CP_ACP表示big5编码的950代码页。

5、CodePage代码页一般填写的是多字节代码页。

 

在程序中,一般最好使用unicode字符集显示字符,Windows的内核就是用unicode编码的,unicode字符集包含了世上大多数字符。unicode在windows下的不同本地环境下都能是正常显示。

但是在使用字符串和其他程序进程(本地进程或者远端进程)进行交互时,最好使用utf8编码字符。

原因是:utf8可以表示最多的字符,所有系统通用,且不像宽字节一样每个字符都要两个字节表示,数字和字母等都是使用一个字节表示,有时可以节省大量字符串流。

 

以上是关于windows下多字节和宽字节转换的主要内容,如果未能解决你的问题,请参考以下文章

windows字符集

宽字节UTF-8多字节互转

宽字节与多字节互相转换

如何将CString转换成wstring

跨平台字符处理

宽字符到多字节问题