為什么在Mysql中不能使用“UFT8”格式,建站技術
導讀:建站技術建站技術使用MYSQL的時候經常會遇到一個問題,試著通過 Rails 在以“utf8”編碼的 MariaDB 中保存一個 UTF-8 字符串,然網站平臺搭建建站技術。
使用MYSQL的時候經常會遇到一個問題,試著通過 Rails 在以“utf8”編碼的 MariaDB 中保存一個 UTF-8 字符串,然后出現了一個特別離奇的錯誤:
Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1
UTF-8 編碼的客戶端,服務器也是 UTF-8 編碼的,數據庫也是,就連要保存的這個字符串“ <…”也是合法的 UTF-8。問題的癥結在于,MySQL 的“utf8”實際上不是真正的 UTF-8。“utf8&rdqudede商城模板o;只支持每個字符最多三個字節,而真正的 UTF-8 是每個字符最多四個字節。原來MySQL 一直沒有修復這個 bug,他們在 2010 年發布了一個叫作“utf8mb4”的字符集,繞過了這個問題。他們并沒有對這個新的字符集廣而告之,以致于現在網絡上仍然在建議開發者使用“utf8”,但是這些建議都是錯誤的。
簡單概括如下:
(1)MySQL 的“utf8mb4”是真正的“UTF-8”。
(2)MySQL 的“utf8”只是一種“專屬的編碼”,它能夠編碼的 Unicode 字符并不多。
尚品小編這里建議大家:使用“utf8”的 MySQL 和 Madede模板堂riaDB 的用戶都應該改用“utf8mb4”,永遠都不要再使用“utf8”。
第一、什么是編碼?什么是 UTF-8?
眾所周知,計算機儲存的實質是二進制,是使用 0 和 1 來存儲文本。比如字符“C”被存成“01000011”,那么計算機在顯示這個字符時需要經過兩個步驟:
我的電腦將“C”映射成 Unicode 字符集中的 67。
我的電腦將 67 編碼成“01000011”,并發送給 Web 服務器。
相對的:
計算機讀取“01000011”,得到數字 67,因為 67 被編碼成“01000011”。
計算機在 Unicode 字符集中查找 67,找到了“C”。
幾乎所有的網絡應用都使用了 Unicode 字符集,因為沒有理由使用其他字符集。
Unicode 字符集包含了上百萬個字符。最簡單的編碼是 UTF-32,每個字符使用 32 位。這樣做最簡單,因為一直以來,計算機將 32 位視為數字,而計算機最在行的就是處理數字。但問題是,這樣太浪費空間了。
UTF-8 可以節省空間,在 UTF-8 中,字符“C”只需要 8 位,其他dede織夢模板的字符可能使用 16 位或 24 位。一篇類似本文這樣的文章,如果使用 UTF-8 編碼,占用的空間只有 UTF-32 的四分之一左右。
聲明: 本文由我的SEOUC技術文章主頁發布于:2023-08-06 ,文章為什么在Mysql中不能使用“UFT8”格式,建站技術主要講述中不,格式,建站網站建設源碼以及服務器配置搭建相關技術文章。轉載請保留鏈接: http://www.bifwcx.com/article/web_36477.html
- 上一篇:初創公司的網站設計如何進行?,建站文章
- 下一篇:網頁設計的3個注意事項,建站文章