為什麼我們設定表的的字元型別為utf8卻不能存放emoji呢?
原來utf8可能是2或3或4個位元組,而mysql的utf8是3個位元組,存放乙個emoji是需要4個位元組的,自然不夠。
mysql資料庫在5.5.3之後開始支援utf8mb4字符集,所以mysql版本是5.5.3+的都可以設定讓資料庫儲存emoji表情,如果你的應用有移動端的,最好一開始設計資料庫的時候就使用utf8mb4字符集,當然沒用的也可以通過如下方式修改:
編輯mysql配置檔案
vim /etc/my.cnf
新增下面**
[mysqld
]character-set-server=utf8mb4
[mysql
]default-character-set=utf8mb4
在mysql中執行以下命令修改環境變數
set character_set_client = utf8mb4;set character_set_connection = utf8mb4;
set character_set_database = utf8mb4;
set character_set_results = utf8mb4;
set character_set_server = utf8mb4;
檢視是否修改成功,執行如下sql語句
show variables where variable_name like 'character\_set\_%' or variable_name like 'collation%';
修改已經建立表的字符集
alter table table_name convert to character set utf8mb4 collate utf8mb4_bin;
至此資料庫的配置就完成了,在**連線資料庫之後還需要執行
set names utf8mb4
這樣就可以自此 emoji 表情了。
如果嫌上述方案麻煩,還要運算元據庫最初的型別。那麼這種方法適合你。
原理:轉義成字串放入到資料庫,使用的時候反轉義可以直接轉義成表情,再把內容傳進去就。
//對emoji表情轉義
function emoji_encode($str
)else
}return
$strencode;}
//對emoji表情轉反義
function emoji_decode($str
), $str
);
return
$strdecode
;}
文章參考:
讓你的**支援 emoji (
如何讓emoji存放到資料庫中 (
mysql資料庫怎麼存入emoji表情
資料庫右鍵 改變資料庫 設定資料庫字元編碼為utf8mb4 general ci 在這裡插入描述 表右鍵 改變表 在這裡插入描述 設定具體欄位的字元編碼 alter table link feedback change profiles profiles varchar 300 character ...
emoji表情在資料庫中如何查詢
1 儲存問題 由於emoji表情4個位元組的,而資料庫中的utf 8的字符集實際上並不是真正的utf8,之後mysql又出了乙個新的字符集utf8mb4,這個才是我們平時所說的utf 8。所以首先儲存的話,需要保證資料庫表的字符集以及該字段的字符集要是utf8mb4才可以。2 查詢問題 儲存沒問題了...
emoji表情符號MYSQL資料庫的處理
資料庫編碼格式utf 8 儲存報錯 incorrect string value xf0 x9f x88 xb2 for column at row 1 原因 emoji表情符號為4個位元組的字元,而 utf8 字符集只支援1 3個位元組的字元,導致無法寫入資料庫。多麼痛的領悟?對的 永遠不要在my...