您的位置:首页 > 其它

MultiByteToWideChar 与 WideCharToMultiByte 准确理解

2015-01-24 15:08 369 查看
记得之前已经写过有关两个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宽字节编码的理解;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  编码 winapi