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/

此条目发表在 信息处理 分类目录,贴了 , , , , , 标签。将固定链接加入收藏夹。

发表评论