10.10.7.1 cp932 字符集

为什么需要cp932

在 MySQL 中,sjis字符集对应于 IANA 定义的Shift_JIS字符集,该字符集支持 JIS X0201 和 JIS X0208 字符。 (请参阅http://www.iana.org/assignments/character-sets。)

但是,“ SHIFT JIS”作为描述性术语的含义已经变得很模糊,并且通常包括由各种供应商定义的Shift_JISextensions。

例如,在日语 Windows 环境中使用的“ SHIFT JIS”是 MicrosoftextensionsShift_JIS,其确切名称是Microsoft Windows Codepage : 932cp932。除了Shift_JIS支持的字符外,cp932还支持扩展字符,例如 NEC 特殊字符,所选 NEC(IBM 扩展字符)和 IBM 所选字符。

许多日语用户在使用这些扩展字符时遇到了问题。这些问题源于以下因素:

MySQL cp932字符集旨在解决这些问题。

由于 MySQL 支持字符集转换,因此将 IANA Shift_JIScp932分成两个不同的字符集非常重要,因为它们提供了不同的转换规则。

cp932sjis有何不同?

cp932字符集与sjis在以下方面有所不同:

转换规则如下所示:

https://msdn.microsoft.com/en-us/goglobal/cc305152.aspx处显示的 table 提供有关cp932个字符的 Unicode 值的信息。对于带有字符的cp932table 条目,其下出现一个四位数的数字,该数字 table 示相应的 Unicode(ucs2)编码。对于带有带下划线的两位数字值的 table 条目,存在以该两位数字开头的cp932字符值范围。单击此类 table 条目将带您到一个页面,该页面显示以这些数字开头的每个cp932字符的 Unicode 值。

以下链接特别有趣。它们对应于以下字符集的编码:

https://msdn.microsoft.com/en-us/goglobal/gg674964
https://msdn.microsoft.com/en-us/goglobal/gg671837
https://msdn.microsoft.com/en-us/goglobal/gg671838
https://msdn.microsoft.com/en-us/goglobal/gg671839
https://msdn.microsoft.com/en-us/goglobal/gg671840
https://msdn.microsoft.com/en-us/goglobal/gg671841

对于某些字符,sjiscp932ucs2之间的转换是不同的。下 table 说明了这些差异。

转换为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

任何日语字符集的用户都应注意,使用--character-set-client-handshake(或--skip-character-set-client-handshake)具有重要的作用。参见第 5.1.6 节“服务器命令选项”

首页