• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 亚洲字符集

    我们支持的亚洲字符集包括中文,日文,韩文和泰文。这些可能很复杂。例如,中文集必须允许成千上万个不同的字符。有关和字符集的更多信息,请参见“ cp932字符集”。有关支持中国国家标准GB 18030的字符集的更多信息,请参见“ gb18030字符集”。cp932sjis

    有关与MySQL支持亚洲字符集有关的一些常见问题的解答,请参见第A.11节“ MySQL 8.0 FAQ:MySQL中文,日文和韩文字符集”。

    • big5(Big5繁体中文)归类:

      • big5_bin
      • big5_chinese_ci(默认)
    • cp932(Windows日语的SJIS)校验规则:

      • cp932_bin
      • cp932_japanese_ci(默认)
    • eucjpms(用于Windows日语的UJIS)校验规则:

      • eucjpms_bin
      • eucjpms_japanese_ci(默认)
    • euckr(EUC-KR韩文)归类:

      • euckr_bin
      • euckr_korean_ci(默认)
    • gb2312(GB2312简体中文)归类:

      • gb2312_bin
      • gb2312_chinese_ci(默认)
    • gbk(GBK简体中文)归类:

      • gbk_bin
      • gbk_chinese_ci(默认)
    • gb18030(中国国家标准GB18030)归类:

      • gb18030_bin
      • gb18030_chinese_ci(默认)
      • gb18030_unicode_520_ci
    • sjis(Shift-JIS日语)校验规则:

      • sjis_bin
      • sjis_japanese_ci(默认)
    • tis620(TIS620 Thai)归类:

      • tis620_bin
      • tis620_thai_ci(默认)
    • ujis(EUC-JP日语)校验规则:

      • ujis_bin
      • ujis_japanese_ci(默认)

    big5_chinese_ci校验校验笔划数。


    cp932字符集

    为什么cp932需要?

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

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

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

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

    • MySQL自动转换字符集。
    • 使用Unicode(ucs2)转换字符集。
    • sjis字符集不支持这些扩展字符转换。
    • 从所谓的“ SHIFT JIS ”到Unicode 有多种转换规则,并且某些字符会根据转换规则而不同地转换为Unicode。MySQL仅支持这些规则之一(稍后描述)。

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

    因为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/。)

      转换规则如下所示:

      • 如果字符同时是JIS X 0208和NEC特殊字符,请使用JIS X 0208的代码点。
      • 如果该字符同时是NEC特殊字符和IBM选择的字符,请使用NEC特殊字符的代码点。
      • 如果该字符同时处于IBM选择的字符和NEC选择的IBM扩展字符中,请使用IBM扩展字符的代码点。

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

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

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

        https://msdn.microsoft.com/en-us/goglobal/gg674964
        
      • 已选择NEC-IBM扩展字符(前导字节0xED0xEE):

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

        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/ujis转换问题。有关详细信息,请参阅 http://www.sljfaq.org/afaq/encodings.html。

    对于某些字符,转换和从ucs2对于不同的sjiscp932。下表说明了这些差异。

    转换为ucs2

    sjis/cp932sjis->ucs2转换cp932->ucs2转换
    5C005C005C
    7E007E007E
    815C2015年2015年
    815F005CFF3C
    8160301CFF5E
    81612016年2225
    817C2212FF0D
    819100A2FFE0
    819200A3FFE1
    81CA00ACFFE2

    从转换ucs2

    ucs2ucs2->sjis转换ucs2->cp932转换
    005C815F5C
    007E7E7E
    00A281913F
    00A381923F
    00AC81CA3F
    2015年815C815C
    2016年81613F
    2212817C3F
    22253F8161
    301C81603F
    FF0D3F817C
    FF3C3F815F
    FF5E3F8160
    FFE03F8191
    FFE13F8192
    FFE23F81CA

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

    gb18030字符集

    在MySQL中,gb18030字符集对应于“中国国家标准GB 18030-2005:信息技术-中文编码字符集”,它是中华人民共和国(PRC)的官方字符集。

    MySQL gb18030字符集的特征

    • 支持GB 18030-2005标准定义的所有代码点。(GB + 8431A439,GB + 90308130)和(GB + E3329A36,GB + EF39EF39)范围内未分配的代码点被视为'?'(0x3F)。未分配代码点的转换返回“?”。
    • 支持所有GB18030代码点的上,下转换。还支持Unicode定义的大小写折叠(基于CaseFolding-6.3.0.txt)。
    • 支持与其他字符集之间的数据转换。
    • 支持SQL语句,例如SET NAMES
    • 支持gb18030字符串之间gb18030以及字符串和其他字符集的字符串之间的比较。如果字符串具有不同的字符集,则会进行转换。还支持包含或忽略尾随空格的比较。
    • Unicode中的专用区域(U + E000,U + F8FF)映射到gb18030
    • (U + D800,U + DFFF)与GB18030之间没有映射。尝试转换此范围内的代码点将返回“?”。
    • 如果输入序列不合法,则会返回错误或警告。如果在中使用了非法序列CONVERT(),则会返回错误。否则,将返回警告。
    • 为了与utf8和保持一致,utf8mb4连字不支持UPPER。
    • 使用gb18030_unicode_520_ci校验规则时,对连字的搜索还匹配大写连字。
    • 如果一个字符有多个大写字符,则所选的大写字符为小写字符本身。
    • 多字节的最小长度为1,最大为4。字符集使用前1个或2个字节来确定序列的长度。

    支持的归类

    • gb18030_bin:二进制校验规则。
    • gb18030_chinese_ci:默认校验规则,支持拼音。非中文字符的校验基于原始校验键的顺序。原始校验键GB(UPPER(ch))是否UPPER(ch)存在。否则,原始校验键为GB(ch)。汉字根据Unicode通用语言环境数据存储库(CLDR 24)中定义的拼音校验规则进行校验。非中文字符在中文字符之前校验,但除外GB +FE39FE39,后者是最大的代码点。
    • gb18030_unicode_520_ci:Unicode归类。如果需要确保连字正确校验,请使用此校验规则。