關於移動裝置 表情符號的資料庫儲存 與 utf8 與utf8mb4 字符集
我們的一些業務系統最近出現了一種情況,尤其是新版的ios 裝置,在釋出訊息時,使用了表情符號時,
對gbk 字符集的資料庫,寫入資料庫的資料,在回顯時,變成 ‘口口’ 無法回顯,
對utf8 字符集的資料庫,則根本無法寫入資料庫,客戶端程式直接報 java.io.exception xxxxxxxx.
原因在哪裡呢?
各種移動裝置,各種不同的輸入法,都會自帶一些增強版的'bmp' 表情符號。
這些表情符號編碼為 4個位元組的 字元, utf8 字符集目前只支援1-3 個位元組的字元,導致資料無法入庫。
解決方案 有兩種:
1. 遍歷輸入的文字,把四位元組長度的字元,修正為自定義的字元替換掉,有一定的工作量。
2. 修改資料庫字符集, 把資料庫字符集從utf8 修改為支援1-4 個位元組字元的utf8mb4
mysql 從 5.5.3 版本開始支援 utf8mb4 字符集 , 從 mysql 5.5.3 之後版本基本可以無縫升級到 utf8mb4 字符集。
3.升級方案:
1) 修改資料庫字符集character-set-server=utf8mb4 重啟資料庫生效。
2) 修改database 的字符集為 utf8mb4 alter database dbname character set utf8mb4
3) 修改表的字符集 為utf8mb4 , alter table character set = utf8mb4
4. 需要注意的一些點。
1) innodb 索引只能支援 767 的位元組,對utf8 大約可以為255 字元做索引, 對utf8mb4 就只有 191 個字元了,你的索引可能要重新定義。
2) 你的char varchar 的欄位定義可能要重新定義或者修改為 text 型別。
3) utf8mb4 是utf8 的一個超集, utf8 字元的編碼,位置, 儲存 在utf8mb4 與utf8 字符集裡一樣的,不會對有現有資料帶來損壞。
4) 謹慎起見,請詳細測試你的應用對該字符集的相容性問題。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-1448920/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 資料庫儲存 Emoji 表情及特殊符號MySql資料庫符號
- 移動端的資料輸入與儲存
- 關於有符號與無符號的位元組符號
- 制定移動儲存裝置的使用策略
- 如何選擇移動儲存裝置
- emoji等表情符號存mysql的方法符號MySql
- 儲存與資料庫系統資料庫
- 關於特殊符號&與& 的處理符號
- MYSQL資料庫與Emoji表情的故事MySql資料庫
- Mysql支援emoji 表情符號 升級編碼為UTF8MB4MySql符號
- 關於資料庫字符集資料庫
- 關於移動資料庫(轉載)資料庫
- Emoji表情符號錄入MySQL資料庫報錯的解決方案符號MySql資料庫
- 用裸裝置與Oracle資料庫的效能Oracle資料庫
- 重新學習Mysql資料庫3:Mysql儲存引擎與資料儲存原理MySql資料庫儲存引擎
- MySQL 04-EMOJI 表情與 UTF8MB4 的故事MySql
- 檔案系統儲存與oracle資料庫儲存對比Oracle資料庫
- [乾貨]資料互動與本地儲存
- 如何儲存windows xp上面的csv檔案(gbk)為utf8字符集Windows
- mysql 字符集:utf8和utf8mb4區別MySql
- 【伺服器儲存裝置資料恢復】EMC儲存裝置POOL上的資料卷被刪除的資料恢復案例伺服器資料恢復
- SCN號與oracle資料庫恢復的關係Oracle資料庫
- SAP 序列號與庫存關聯起來?
- 關於資料儲存的一個故事
- 表情符號——讓你的word文件更生動有趣符號
- 阿里雲RDS for MySQL使用utf8mb4編碼儲存Emoji表情阿里MySql
- oracle國家字符集與資料庫字符集Oracle資料庫
- RAC 資料庫的啟動與關閉資料庫
- Oracle資料庫的啟動與關閉Oracle資料庫
- 2 Day DBA-管理Oracle例項-管理資料庫儲存結構-關於資料庫儲存結構Oracle資料庫
- RAC資料庫一節點更換HBA卡導致emc儲存裝置序號變動處理記錄資料庫
- 關於資料庫 Block 儲存細節問題的討論資料庫BloC
- 識別符號與關鍵字符號
- 數倉血緣關係資料的儲存與讀寫
- 關於InnoDB表資料和索引資料的儲存索引
- 一個UTF8字符集相關問題的解決
- vivo資料庫與儲存平臺的建設和探索資料庫
- 關於裸裝置資料的處理