2012-07-18 81 views
28

utf16或utf32?我試圖用很多語言存儲內容。某些語言使用雙寬字體(例如,日文字體的寬度通常是英文字體的兩倍)。我不確定我應該使用哪種數據庫。關於這四個字符集之間的差異的任何信息...Utf8_general_ci或utf8mb4或...?

回答

40

MySQL的utf32utf8mb4(以及標準的UTF-8)可以直接存儲由指定的Unicode字符的任何;前者的固定大小是每個字符4個字節,後者是每個字符1到4個字節。

utf8mb3和原utf8只能存儲在第一次65,536碼點,這將覆蓋CJVK(中國,日本,越南,韓國),並且每個字符使用1到3個字節。

utf16對於前65536個碼點使用2個字節,對於其他所有使用4個字節。

至於字體,這是嚴格意義上的視覺事物。

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

MySQL documentation for Unicode support見。

+5

爲了更加清楚,關於'utf8_general'的註釋也適用於所有其他'utf8_ *'排序規則;所有將使用MySQL的'utf8mb3'又名'utf8'字符集。 – 2012-07-18 02:37:57

+0

@JohnFlatness謝謝。你的評論正是我接下來要問的。雖然我認爲UTF-16使用2個字節的普通話字符,例如?我正在查看你給我的文檔,希望它能涵蓋65,536條的含義。 XD – 2012-07-18 03:05:26

+0

中文字符在基本多語言平面內(第65,536個碼點)。 – 2012-07-18 03:06:14

相關問題