转载自:http://openwebx.org/docs/requestcontexts.html
Locale和charset是相对独立的两个参数,但是又有一定的关系。
Locale决定了要显示的文字的语言,而charset则将这种语言的文字编码成bytes或从bytes解码成文字。因此,charset必须能够涵盖locale所代表的语言文字,如果不能,则可能出现乱码。下表列举了一些locale和charset的组合:
表 Locale和Charset的关系
Locale | 英文字符集 | 中文字符集 | 全字符集 | |||
---|---|---|---|---|---|---|
ISO-8859-1 | GB2312 | Big5 | GBK | GB18030 | UTF-8 | |
en_US (美国英文) | √ | √ | √ | √ | √ | √ |
zh_CN (简体中文) | √ | √ | √ | √ | ||
zh_TW 、zh_HK (台湾中文、香港中文) | √ | √ | √ | √ |
在所有charset中,有几个“全能”编码:
-
涵盖了unicode中的所有字符。然而用
UTF-8
来编码中文为主的页面时,每个中文会占用3个字节。建议以非中文为主的页面采用UTF-8
编码。 -
中文国际标准,和
UTF-8
一样,涵盖了unicode中的所有字符。用GB18030
来编码中文为主的页面时有一定优势,因为绝大多数常用中文仅占用2个字节,比UTF-8
短1/3。然而GB18030
在非中文的操作系统中,有可能不能识别,其通用性不如UTF-8
好。因此仅建议以中文为主的页面采用GB18030
编码。 -
严格说,
GBK
不是全能编码(例如对很多西欧字符就支持不好),也不是国际标准。但它支持的字符数量接近于GB18030
。
UTF-8
GB18030
GBK