More  

小編的世界 優質文選 資料

不要在MySQL數據庫中使用UTF-8編碼


2020年9月03日 - 資料小編 程序猿解碼 
   

MySQL編碼實現

標准的UTF-8字符編碼可以用4個字節去編碼最多21位字符,這幾乎包括了世界上所有的字符集了,然而在MySQL裏實現的UTF-8編碼使用3個字節去編碼最多16位字符(即只能存放Unicode編碼從0x0000到0xFFFF的字符)
。好在MySQL在2010年實現了一個以utf8mb4命名的UTF-8實現,並在5.5.3版本進行了發布。簡單說utf8mb4是utf8的超集並完全兼容utf8,能夠用4個字節存儲更多的字符。

Unicode編碼

Unicode並不是真正意義上的編碼技術,它只是將世界上的所有字符定義了一個編號並形成標准;它規定了字符的二進制代碼,卻沒有規定這個二進制代碼應該如何存儲。

UTF-8編碼

我們常用的UTF-8、GBK等編碼技術(准確來說應該是字符編碼存儲技術)的核心就是規定了Unicode的二進制代碼應該如何存儲。比如說我把Unicode的二進制代碼高位補0後存儲起來也是一種編碼方案,只不過這種方案太low了。

UTF-8的編碼規則很簡單,只有二條:

(1)對於單字節的符號,字節的第一位設為0,後面7位為這個符號的Unicode碼。因此對於英文字母,UTF-8編碼和ASCII碼是相同的。

(2)對於n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,後面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的 Unicode 碼。

  大家在看