MySQL 将自定义字符集添加到 utf8mb4 而不是 utf8

MySQL Add Custom Charset to utf8mb4 not utf8

提问人:Mohamed Mo Kawsara 提问时间:12/6/2017 更新时间:11/16/2023 访问量:470

问:

我需要向 MySQL 服务器添加一个自定义字符集以增强搜索体验,我实际上能够做到,但进入utf8_charset而不是它的 mb4 版本。即使在 MySQL 文档中,我似乎也找不到有关 mb4 的任何内容

正如他们在文档中提到的,我编辑了文件,并在 下添加了我的子集,因为我找不到任何子集/usr/share/MySQL/charsets/Index.xml<charset name="utf8">utf8mb4

 <collation name="utf8_arabic_ci" id="1029">
   <rules>
     <reset>\u0627</reset> <!-- Alef 'ا' -->
     <i>\u0623</i>        <!-- Alef With Hamza Above 'أ' -->
     <i>\u0625</i>        <!-- Alef With Hamza Below 'إ' -->
     <i>\u0622</i>        <!-- Alef With Madda Above 'آ' -->
   </rules>
   <rules>
     <reset>\u0629</reset> <!-- Teh Marbuta 'ة' -->
     <i>\u0647</i>        <!-- Heh 'ه' -->
   </rules>
   <rules>
     <reset>\u0000</reset> <!-- Ignore Tashkil -->
     <i>\u064E</i>        <!-- Fatha 'َ' -->
     <i>\u064F</i>        <!-- Damma 'ُ' -->
     <i>\u0650</i>        <!-- Kasra 'ِ' -->
     <i>\u0651</i>        <!-- Shadda 'ّ' -->
     <i>\u064F</i>        <!-- Sukun 'ْ' -->
     <i>\u064B</i>        <!-- Fathatan 'ً' -->
     <i>\u064C</i>        <!-- Dammatan 'ٌ' -->
     <i>\u064D</i>        <!-- Kasratan 'ٍ' -->
   </rules>
 </collation>

它的工作方式很有魅力,但是,我无法更改我的整个数据库列碰撞以使用,甚至无法更改我的自定义列utf8mb4_unicode_ciutf8_unicode_ciutf8_arabic_ci

MySQL UTF-8 字符编码 阿拉伯语 支持

评论

0赞 Rick James 12/6/2017
我希望 utf8 的文档适用于 utf8mb4。
0赞 Mohamed Mo Kawsara 12/8/2017
不幸的是,它仅适用于 utf8,我什至无法强制转换查询以使用 utf8mb4,因此我真的很想知道如何扩展或修改 uft8mb4 字符集
0赞 Rick James 12/8/2017
请澄清:你说的是还是?前者说存在哪些字符,比如表情符号只存在于utf8mb4中。后者指的是排序,例如西班牙语是在 之前还是之后。CHARACTER SETCOLLATIONlllmlz

答:

0赞 Hamza hamza 11/16/2023 #1

我认为您需要添加一个全新的字符集 查看 https://dev.mysql.com/doc/refman/8.0/en/ldml-collation-example.html

<charset name="utf8mb4">
  ...
  <collation name="utf8mb4_phone_ci" id="1029">
    <rules>
      <reset>\u0000</reset>
      <i>\u0020</i> <!-- space -->
      <i>\u0028</i> <!-- left parenthesis -->
      <i>\u0029</i> <!-- right parenthesis -->
      <i>\u002B</i> <!-- plus -->
      <i>\u002D</i> <!-- hyphen -->
    </rules>
  </collation>
  ...
</charset>