mysql 保存表情包

Exception: MySQL Error: Incorrect string value: '\xF0\x9F\x90\xB1' for column ......

Emoji表情符号为4个字节的字符,而 utf8 字符集只支持1-3个字节的字符,所以无法写入数据库。(mysql版本需要高于5.5.3)

所以解决方案就是修改字符编码。修改可以分为全局修改和当前链接修改。全局修改需要修改服务器端的配置,会话修改只需要在链接时进行修改。此处只讲会话修改。

                   character_set_client:客户端来源数据使用的字符集

                   character_set_connection:连接层字符集

                   character_set_database:当前选中数据库的默认字符集

                   character_set_server:默认的内部操作字符集

                   character_set_results:查询结果字符集

                   character_set_system:系统元数据(字段名等)字符集


我们需要更改的有三个地方,客户端,连接层和查询结果。正好 'set names utf8mb4' 指令能完成三个变量的设置。

例如我们使用pdo 来链接mysql :

$pdo = new PDO('mysql:host=localhost;dbname=dbname','root','');
$pdo->query('set names utf8mb4');
然后你的字段如:

t_name varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci not null default '' comment'玩家名',

这样就能很简单的保存表情了。

提供几个不错的相关博客:

http://leezhxing.blog.51cto.com/6634351/1320045

http://javazqd110.iteye.com/blog/2342609

http://blog.itpub.net/26230597/viewspace-1243233/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值