我们支持的亚洲字符集包括中文、日语、韩语和泰国语。这些可能比较复杂。例如,中文字符集必须考虑到上千种不同的字符。
· big5(Big5传统中文) 校对规则:
o big5_bin
o big5_chinese_ci( 默认)
· cp932(SJIS Windows日语)校对规则:
o cp932_bin
o cp932_japanese_ci( 默认)
· eucjpms(UJIS Windows日语)校对规则:
o eucjpms_bin
o eucjpms_japanese_ci( 默认)
· euckr(EUC-KR 韩语)校对规则:
o euckr_bin
o euckr_korean_ci( 默认)
· gb2312(GB2312 简体中文)校对规则:
o gb2312_bin
o gb2312_chinese_ci( 默认)
· gbk(GBK简体中文) 校对规则:
o gbk_bin
o gbk_chinese_ci( 默认)
· sjis(Shift-JIS 日语)校对规则:
o sjis_bin
o sjis_japanese_ci( 默认)
· tis620(TIS620 泰国语)校对规则:
o tis620_bin
o tis620_thai_ci( 默认)
· ujis(EUC-JP 日语)校对规则:
o ujis_bin
o ujis_japanese_ci( 默认)
为什么需要cp932?
在MySQL中,sjis字符集对应于由IANA定义的Shift_JIS字符集,它支持JIS X0201和JIS X0208字符。(见 http://www.iana.org/assignments/character-sets。)
但是,“SHIFT JIS”作为描述性术语的含义变得非常含糊不清,并且它常常包括由不同供应商定义的Shift_JIS扩展部分。
例如,使用在日本Windows环境中使用的“SHIFT JIS”是Microsoft对Shift_JIS的Microsoft扩展,它的准确名字是Microsoft Windows Codepage: 932或cp932。除由Shift_JIS支持的字符之外,cp932支持扩展字符,如NEC选择的IBM扩展字符和IBM扩展字符。
许多日本用户在使用这些扩展字符过程中碰到过一些问题。这些问题是由于以下情况引起的:
· MySQL自动转换字符集。
· 字符集通过Unicode转换(ucs2)。
· sjis字符集不支持这些扩展字符转换。
· 从号称“SHIFT JIS”到Unicode的转换,存在一些转换规则,并且一些字符转换到Unicode依赖不同的转换规则。MySQL仅支持这些转换规则中的一种(在后面描述)。
MySQLcp932字符集可以解决这些转换问题。
因为MySQL支持字符集转换,将IANA Shift_JIS 和 cp932分离为两种不同字符集是重要的,因为它们提供不同的转换规则。
cp932与sjis有什么不同?
cp932字符集与sjis存在以下不同点:
· cp932支持NEC特殊字符、NEC选择的IBM扩展字符和IBM选择的字符。
· 一些cp932字符有两个不同的编码点,这两种编码点转换为相同Unicode编码点。因此,当从Unicode转换回到cp932时,必须选择一个编码点。对于这种“相互转换”,使用由Microsoft推荐的转换规则。(见 http://support.microsoft.com/kb/170559/EN-US/。)
转换规则如下:
o 如果字符在JIS X 0208 和NEC特殊字符中同时存在,使用JIS X 0208 的编码点。
o 如果字符在NEC特殊字符和IBM选择的字符中同时存在,使用NEC特殊字符的编码点。
o 如果字符在IBM选择的字符和NEC选择的IBM扩展字符中同时存在,使用IBM扩展字符的编码点。
关于cp932字符的Unicode 值的列表显示信息见http://www.microsoft.com/globaldev/reference/dbcs/932.htm。对于cp932表中的带有下面有四位数字出现的字符的实体,数字代表相应的Unicode(ucs2)编码。对于表中有两个带下划线的数字出现的实体,择有一个以那两个数字开头的cp932字符值的范围。点击一个这种表的实体,将带你到一个页,该页显示每个以那些数字开头的cp932字符的Unicode值。
以下连接很重要。它们与下列字符集的编码相对应:
o NEC特殊字符:
http://www.microsoft.com/globaldev/reference/dbcs/932/932_87.htm
o NEC选择的IBM扩展字符:
o http://www.microsoft.com/globaldev/reference/dbcs/932/932_ED.htm
o http://www.microsoft.com/globaldev/reference/dbcs/932/932_EE.htm
o IBM选择的字符:
o http://www.microsoft.com/globaldev/reference/dbcs/932/932_FA.htm
o http://www.microsoft.com/globaldev/reference/dbcs/932/932_FB.htm
o http://www.microsoft.com/globaldev/reference/dbcs/932/932_FC.htm
· cp932与eucjpms结合支持用户自定义字符的转换,并且解决sjis/ujis转换问题。详细信息,请参见http://www.opengroup.or.jp/jvc/cde/sjis-euc-e.html。
· 对于一些字符,与ucs2之间的转换与sjis和cp932之间的转换是不同的。下表举例说明了这些不同。
转换到ucs2:
sjis/cp932值 |
sjis→ ucs2转换 |
cp932 → ucs2转换 |
5C |
005C |
005C |
7E |
007E |
007E |
815C |
2015 |
2015 |
815F |
005C |
FF3C |
8160 |
301C |
FF5E |
8161 |
2016 |
2225 |
817C |
2212 |
FF0D |
8191 |
00a2 |
FFE0 |
8192 |
00a3 |
FFE1 |
81Ca |
00aC |
FFE2 |
从ucs2转换:
ucs2值 |
ucs2 → sjis转换 |
ucs2 → cp932转换 |
005C |
815F |
5C |
007E |
7E |
7E |
00a2 |
8191 |
3F |
00a3 |
8192 |
3F |
00aC |
81Ca |
3F |
2015 |
815C |
815C |
2016 |
8161 |
3F |
2212 |
817C |
3F |
2225 |
3F |
8161 |
301C |
8160 |
3F |
FF0D |
3F |
817C |
FF3C |
3F |
815F |
FF5E |
3F |
8160 |
FFE0 |
3F |
8191 |
FFE1 |
3F |
8192 |
FFE2 |
3F |
81Ca |