10bet网址
MySQL 8.0参考手册
相关的文档10bet官方网站 下载本手册
PDF(美国Ltr)- 41.6 mb
PDF (A4)- 41.7 mb
手册(TGZ)- 262.5 kb
手册(Zip)- 372.6 kb
信息(Gzip)- 4.0 mb
信息(邮政编码)- 4.0 mb
本手册节选

10.10.7.1 cp932字符集

为什么cp932需要吗?

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

然而,意义SHIFT JIS作为一个描述性的术语已经变得非常模糊,它经常包括to的扩展Shift_JIS由不同的供应商定义。

例如,SHIFT JIS在日文Windows环境中使用的是微软的扩展Shift_JIS确切的名字是微软Windows代码页:932cp932.除了字符支持Shift_JIScp932支持扩展字符,如NEC特殊字符、NEC选择- IBM扩展字符和IBM选择字符。

许多日本用户在使用这些扩展字符时会遇到问题。产生这些问题的原因有以下几个方面:

  • MySQL自动转换字符集。

  • 字符集使用Unicode (ucs2).

  • sjis字符集不支持这些扩展字符的转换。

  • 从所谓的有几个转换规则SHIFT JIS根据转换规则的不同,有些字符会以不同的方式转换为Unicode。MySQL只支持其中一种规则(稍后将介绍)。

MySQLcp932字符集就是为了解决这些问题而设计的。

因为MySQL支持字符集转换,所以分离IANA非常重要Shift_JIS而且cp932转换为两个不同的字符集,因为它们提供不同的转换规则。

如何cp932不同于sjis?

cp932字符集不同于sjis可以通过以下方式:

  • cp932支持NEC特殊字符、NEC选择- IBM扩展字符和IBM选择字符。

  • 一些cp932字符有两个不同的码位,它们都转换为相同的Unicode码位。当从Unicode转换回cp932,必须选择其中一个代码点。对于这个往返转换,使用微软推荐的规则。(见http://support.microsoft.com/kb/170559/EN-US/.)

    转换规则是这样工作的:

    • 如果该字符同时属于JIS X 0208和NEC特殊字符,则使用JIS X 0208的代码点。

    • 如果该字符同时是NEC特殊字符和IBM选择字符,则使用NEC特殊字符的编码点。

    • 如果该字符同时是IBM选择的字符和NEC选择的IBM扩展字符,则使用IBM扩展字符的代码点。

    表格载于https://msdn.microsoft.com/en-us/goglobal/cc305152.aspx的Unicode值的信息cp932字符。为cp932表项,其中的字符下面有一个四位数的数字,该数字表示相应的Unicode (ucs2)编码。对于出现带下划线的两位数值的表项,范围为cp932以这两个数字开头的字符值。单击这样的表项会转到一个页面,该页面显示每个cp932以这些数字开头的字符。

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

    • NEC特殊字符(前字节)0 x87):

      https://msdn.microsoft.com/en-us/goglobal/gg674964
    • NEC选择的ibm扩展字符(前导字节0中而且0 xee):

      https://msdn.microsoft.com/en-us/goglobal/gg671837 https://msdn.microsoft.com/en-us/goglobal/gg671838
    • IBM选择的字符(前导字节0 xfa0 xfb0 xfc):

      https://msdn.microsoft.com/en-us/goglobal/gg671839 https://msdn.microsoft.com/en-us/goglobal/gg671840 https://msdn.microsoft.com/en-us/goglobal/gg671841
  • cp932支持用户定义字符的转换eucjpms,并解决问题sjis/里头转换。详情请参阅http://www.sljfaq.org/afaq/encodings.html

对于某些字符,转换到和从ucs2是不同的sjis而且cp932.下表说明了这些差异。

转换为ucs2

sjis/cp932价值 sjis->ucs2转换 cp932->ucs2转换
5度 005 c 005 c
7 e 007 e 007 e
815 c 2015 2015
华氏815度 005 c FF3C
8160 301 c FF5E
8161 2016 2225
817 c 2212 FF0D
8191 00 a2 FFE0
8192 00 a3 FFE1
81 ca 00交流 FFE2

转换从ucs2

ucs2价值 ucs2->sjis转换 ucs2->cp932转换
005 c 华氏815度 5度
007 e 7 e 7 e
00 a2 8191 3 f
00 a3 8192 3 f
00交流 81 ca 3 f
2015 815 c 815 c
2016 8161 3 f
2212 817 c 3 f
2225 3 f 8161
301 c 8160 3 f
FF0D 3 f 817 c
FF3C 3 f 华氏815度
FF5E 3 f 8160
FFE0 3 f 8191
FFE1 3 f 8192
FFE2 3 f 81 ca

使用任何日文字符集的用户都应该注意使用——character-set-client-handshake(或——skip-character-set-client-handshake)有很重要的作用。看到第5.1.7节,“服务器命令选项”