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

时间:2012-07-18 02:19:22

标签: utf-8 localization utf-16 utf-32 utf8mb4

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

2 个答案:

答案 0 :(得分:40)

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

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

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

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

"The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)"

另见MySQL documentation for Unicode support

答案 1 :(得分:0)

utf8mb4是最好的。

utf8mb4支持每个字符4个字节,而utf8支持每个字符3个字节,因此它涵盖了更广泛的用途,没有错误。

例如,通过utf8mb4,您可以支持表情符号。如果尝试在不受支持的字符集中插入表情符号,则会出现错误。

utf8mb4是2的更新版本,最终将替换旧版本。