1、Locale ID
Locale是指特定于某个国家或地区的一组设定,包括字符集,数字、货币、时间和日期的格式等。在Windows中,每个Locale可以用一个32位数字表示,记作LCID。在winnt.h中可以看到LCID的组成。它的高16位表示字符的排序方法,一般为0。在它的低16位中,低10位是primary language的ID,高4位指定sublanguage。sublanguage被用来区分同一种语言的不同编码。下面是部分primary language和sublanguage的常数定义:
#define LANG_CHINESE 0x04 #define LANG_ENGLISH 0x09 #define LANG_FRENCH 0x0c #define LANG_GERMAN 0x07 #define SUBLANG_CHINESE_TRADITIONAL 0x01 // Chinese (Taiwan Region) #define SUBLANG_CHINESE_SIMPLIFIED 0x02 // Chinese (PR China) #define SUBLANG_ENGLISH_US 0x01 // English (USA) #define SUBLANG_ENGLISH_UK 0x02 // English (UK)
好,现在我们可以计算简体中文的LCID了,将sublanguage的常数左移10位,即乘上1024,再加上primary language的常数:2*1024+4=2052,16进制是0804;美国英语是:1*1024+9=1033,16进制是0409;繁体中文是1*1024+4=1028,16进制是0404。2、代码页代码页是字符集编码的别名,也有人称"内码表"。简体中文的代码页为:936。参见“代码页”百度百科。