现行的的windows系统 xp ,2000, vista 都是unicode 作为内码的操作系统。
也可以这么说系统所有内部文字处理,函数调用都要转换成unicode后再进行处理和调用。
既然windows是个支持多国语言的操作系统那么它是通过什么样方式来实现多国语言的支持的呢?
答案就是通过codepage .codepage 到底是什么东西呢?它里面实际上就保存着各国语言编码对应unicode的映射表。如下是 GB 2312 codepage 936 对应的一部分,它们来自ftp://ftp.unicode.org/Public/MAPPINGS/
uncode gb2312 中日韩 字符
0x3021 0X554A # <CJK>
0x3022 0X963F # <CJK>
0x3023 0X57C3 # <CJK>
0x3024 0X6328 # <CJK>
0x3025 0X54CE # <CJK>
0x3026 0X5509 # <CJK>
0x3027 0X54C0 # <CJK>
0x3028 0X7691 # <CJK>
0x3029 0X764C # <CJK>
0x302A 0X853C # <CJK>
0x302B 0X77EE # <CJK>
0x302C 0X827E # <CJK>
0x302D 0X788D # <CJK>
0x302E 0X7231 # <CJK>
0x302F 0X9698 # <CJK>
0x3030 0X978D # <CJK>
0x3031 0X6C28 # <CJK>
0x3032 0X5B89 # <CJK>
0x3033 0X4FFA # <CJK>
0x3034 0X6309 # <CJK>
0x3035 0X6697 # <CJK>
0x3036 0X5CB8 # <CJK>
0x3037 0X80FA # <CJK>
0x3038 0X6848 # <CJK>
0x3039 0X80AE # <CJK>
0x303A 0X6602 # <CJK>
0x303B 0X76CE # <CJK>
......
BIG5 codepage 950 就是繁体内码转换页
unicode big5 中日韩 字符
0xA6FB 0X4F54 # <CJK>
0xA6FC 0X4F3C # <CJK>
0xA6FD 0X4F46 # <CJK>
0xA6FE 0X4F63 # <CJK>
0xA740 0X4F5C # <CJK>
0xA741 0X4F60 # <CJK>
0xA742 0X4F2F # <CJK>
0xA743 0X4F4E # <CJK>
0xA744 0X4F36 # <CJK>
0xA745 0X4F59 # <CJK>
0xA746 0X4F5D # <CJK>
0xA747 0X4F48 # <CJK>
0xA748 0X4F5A # <CJK>
0xA749 0X514C # <CJK>
0xA74A 0X514B # <CJK>
0xA74B 0X514D # <CJK>
0xA74C 0X5175 # <CJK>
......
通过以上codepage大概就可以裁出windows 是通过查表方式来与个国的文字编码进行转换的。
对应的相关api函数有
WideCharToMultiByte
MultiByteToWideChar
上面的WideChar就是指wide-character (Unicode)
MultiByte 是指multibyte character set 也就是通常所说的 GB码等各国的字符编码集合
这个两个函数就是提供各个编码与unicode之间的转换