MultiByteToWideChar 与 WideCharToMultiByte 准确理解

来源:互联网 发布:金针软件下载 编辑:程序博客网 时间:2024/05/20 02:27

记得之前已经写过有关两个API用法的文章,知道是知道含义,但是有些关键点没有把握到:


(1)多字节也有许多编码格式,其中包括Ansi和UTF8,这里容易混淆的地方是:UTF8与UNICODE,UTF是多字节集不是UNICODE

(2)UTF8为不定长存储,也就是说他存储的长度是不确定的,如:

占2个字节的:〇占3个字节的:基本等同于GBK,含21000多个汉字占4个字节的:中日韩超大字符集里面的汉字,有5万多个
(3)UNICODE中,英文和中文都是占用两个字节长度

(4)Ansi中英文字节长度又不同,如英文一个字节,中文则是两个字节;如:

// ANSI 字符串,内容长度 7 字节
char
     sz[20] = "中文123";


一句话就是,Ansi和UTF8都是多字节存储的一种方式,Ansi英文一个字节中文2个字节,UTF8一个英文占用一个字节,中文占用n个不定长字节,Unicode(宽字节)则是中英文都占用2字节;!!


另外,关于API第一个参数理解,MSDN说的很模糊不容易理解,并且感觉不太正确,有歧义,特此解释如下:

MultiByteToWideChar 

(1)第一个参数标志将要转化的源字符串的编码格式,也就是说该多字节是什么类型的多字节(多字节是那种编码格式),如果多字节的编码格式为Ansi则CP_ACP,如果为UTF8编码,则为CP_UTF8;


关键点还是,多字节集与Unicode宽字节编码的理解;


0 0
原创粉丝点击