mysql不能儲存生僻漢字?試試utf8mb4字符集

今天發現存進mysql的數據部分丟失了。發現丟失的都是一些生僻的漢字。我這個mysql使用的是utf8字符集,之前一直以為不會發生這種問題,今天才看到了。而且這個問題很早就存在了。這是mysql的一個bug,它的UTF-8字符集只能存儲3字節字符,而有部分生僻的漢字是4個字節的,存入時就會出錯:

ActiveRecord::StatementInvalid: Mysql::Error: Incorrect string value: ‘xF0x90x8Dx83xF0x90…’ for column ‘content’ at row 1

上面的官方bug頁面說要到mysql6.0才會解決。其實這個問題在mysql 5.5就解決了。5.5或以上的mysql都可以通過使用utf-16或utf8mb4等字符集解決這個問題。

不過使用ruby on rails的話可能需要一些額外的設置

轉載請註明: 轉自船長日誌, 本文鏈接地址: http://www.cslog.cn/Content/mysql-utf8mb4/zh-hant/

此條目發表在 信息處理 分類目錄,貼了 , , , , , 標籤。將固定鏈接加入收藏夾。

發表評論