MySQL: 我应该设置哪种默认排序规则来涵盖所有欧洲字符?
MySQL: which default collation should I set to cover all european characters?
我注意到我的架构无法打印一些带有区域字符的字符串,例如 è、ù 和其他重音符号或符号。
管理器应用程序是一个 Java servlet,它没有这样的问题。它使用 jdbc 驱动程序。所以我认为原因可能是这个默认排序规则:utf8 - utf8_general_ci.
经过研究发现这些字符不能保存在utf8字节中。
我应该使用 utf8-mb4、utf-16、utf-32 还是其他?支持所有欧洲字符(无西里尔字符、阿拉伯字符和亚洲字符)的最小最佳字符是哪个?
例如,这个选择的答案建议 utf8mb4_unicode,但我不知道它是否真的是涵盖我需要的所有字符的最低限度。
What's the difference between utf8_general_ci and utf8_unicode_ci
编码应该使用CHARACTER SET utf8
或utf8mb4
。 utf8
涵盖整个欧洲和 大部分 世界其他地区。 utf8mb4
涵盖了世界上所有的语言。 utf8
是 utf8mb4
.
的子集
可以根据您想要的顺序使用不同的COLLATIONs
。例如,西班牙语(使用 utf8_spanish2_ci 或 utf8mb4_spanish2_ci)使用 ll
玩其他语言不玩的游戏。 utf8_latvian_ci
将 Ķ
视为不同于 K
的字符;其他人没有。
如果您不担心详细的语言差异,那么我推荐 ..._general_ci
或 ..._unicode_ci
或 ..._unicode_520_ci
如果您有最新版本的 MySQL。这三个 排序规则 主要区别如下:
- general: 只测试一个字符进行比较。这不允许将
ll
视为单独的字母。这个 稍微 更快。
- unicode:这是从旧的 Unicode 标准派生的。这处理 "combining" 口音 'correctly'.
- unicode_520:这是基于较新的标准。表情符号被视为不同的。
- unicode_...:MySQL.
的更高版本中可能会有更多内容
您的应用程序做什么并不重要,但是,您必须
- 告诉MySQL客户端有什么编码:
?useUnicode=yes&characterEncoding=UTF-8
- 在每列或table.
上建立CHARACTER SET utf8
(或utf8mb4)
- 如果您使用的是网页,请在
meta
标签中设置 charset=UTF-8
。
我注意到我的架构无法打印一些带有区域字符的字符串,例如 è、ù 和其他重音符号或符号。
管理器应用程序是一个 Java servlet,它没有这样的问题。它使用 jdbc 驱动程序。所以我认为原因可能是这个默认排序规则:utf8 - utf8_general_ci.
经过研究发现这些字符不能保存在utf8字节中。 我应该使用 utf8-mb4、utf-16、utf-32 还是其他?支持所有欧洲字符(无西里尔字符、阿拉伯字符和亚洲字符)的最小最佳字符是哪个?
例如,这个选择的答案建议 utf8mb4_unicode,但我不知道它是否真的是涵盖我需要的所有字符的最低限度。
What's the difference between utf8_general_ci and utf8_unicode_ci
编码应该使用CHARACTER SET utf8
或utf8mb4
。 utf8
涵盖整个欧洲和 大部分 世界其他地区。 utf8mb4
涵盖了世界上所有的语言。 utf8
是 utf8mb4
.
可以根据您想要的顺序使用不同的COLLATIONs
。例如,西班牙语(使用 utf8_spanish2_ci 或 utf8mb4_spanish2_ci)使用 ll
玩其他语言不玩的游戏。 utf8_latvian_ci
将 Ķ
视为不同于 K
的字符;其他人没有。
如果您不担心详细的语言差异,那么我推荐 ..._general_ci
或 ..._unicode_ci
或 ..._unicode_520_ci
如果您有最新版本的 MySQL。这三个 排序规则 主要区别如下:
- general: 只测试一个字符进行比较。这不允许将
ll
视为单独的字母。这个 稍微 更快。 - unicode:这是从旧的 Unicode 标准派生的。这处理 "combining" 口音 'correctly'.
- unicode_520:这是基于较新的标准。表情符号被视为不同的。
- unicode_...:MySQL. 的更高版本中可能会有更多内容
您的应用程序做什么并不重要,但是,您必须
- 告诉MySQL客户端有什么编码:
?useUnicode=yes&characterEncoding=UTF-8
- 在每列或table. 上建立
- 如果您使用的是网页,请在
meta
标签中设置charset=UTF-8
。
CHARACTER SET utf8
(或utf8mb4)