Utf8_general_ci或utf8mb4还是......?

Wol*_*'08 28 localization utf-8 utf-16 utf-32 utf8mb4

utf16或utf32?我正在尝试以多种语言存储内容.某些语言使用双宽字体(例如,日语字体通常是英文字体的两倍).我不确定我应该使用哪种数据库.有关这四个字符集之间差异的任何信息......

Ign*_*ams 40

MySQL utf32utf8mb4(以及标准UTF-8)可以直接存储Unicode指定的任何字符; 前者是固定大小,每个字符4个字节,而后者每个字符1到4个字节.

utf8mb3并且原始版本utf8只能存储前65,536个代码点,这些代码点将覆盖CJVK(中文,日文,越南,韩文),每个字符使用1到3个字节.

utf16 对于前65,536个代码点使用2个字节,对于其他所有代码点使用4个字节.

至于字体,这绝对是一种视觉效果.

"每个软件开发人员绝对最低限度,绝对必须知道Unicode和字符集(没有借口!)"

另请参阅MySQL文档以获取Unicode支持.

  • 为了更清楚,关于`utf8_general`的评论也适用于所有其他`utf8_*'校对; 所有人都将使用MySQL的`utf8mb3`又名`utf8`字符集. (5认同)
  • `utf8`和`utf8mb3`不包括所有CJK字符,其中一些是4字节宽. (2认同)