zoukankan      html  css  js  c++  java
  • 微信开放接口获取用户昵称保存到MySQL中为空白

    微信昵称中包含emoji表情标签,某些标签是使用了4字节编码的UTF8。

    而大多数MySQL数据库现在使用的是3字节UTF8编码,这样会导致保存为空,且不会提示失败。

    解决方法有2个,一个是升级到MySQL5.5+版本,支持utf8mb4编码格式,然后执行下面的变更语句:

    ALTER TABLE 表名 CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

    这样可以完整保存用户昵称,但系统升级风险较大,需要多方面测试。

    另外一个方法更容易,就是去除非3字节的特殊符号,

    $nickname = preg_replace('/[x{10000}-x{10FFFF}]/u', '', $nickname);

    缺点是这会导致读取显示的时候少了那些漂亮的图标。

  • 相关阅读:
    SQL之层次查询
    GROUP函数
    SQL之统计
    正则表达式
    聚合函数,分析函数
    oracle函数
    Vue3.0优化
    浅谈FC
    短链接生成原理
    Vue路由传参
  • 原文地址:https://www.cnblogs.com/w10234/p/5973823.html
Copyright © 2011-2022 走看看