app.brand
nav.index
nav.about
user.sign.in
微信获取用户信息包含表情符号导致写入MySQL数据库错误
###方案一:修改数据库为支持4个字节的utf8mb4编码,原因请看[这里](https://www.pigway.com/Article/detail?aid=S6_Jh4XUvmrlo2IvkkqBD "这里") 1.升级MySQL到支持uft8mb4编码的最低版本5.5以上(我开发环境本身已经支持) 2.更改MySQL设置,修改/etc/my.cnf配置文件 在[client]后追加或修改`default-character-set = utf8mb4` 在[mysqld]后追加或修改`character_set_server = utf8mb4` ###方案二:将获取的微信昵称等进行urlencode转码之后再存储到数据库中,显示的时候urldecode ###方案三:将获取的微信昵称等中特殊字符过滤(明显下下策,只是一种可能性) ```php public static function removeEmoji($text) { $clean_text = ""; // Match Emoticons $regexEmoticons = '/[\x{1F600}-\x{1F64F}]/u'; $clean_text = preg_replace($regexEmoticons, '', $text); // Match Miscellaneous Symbols and Pictographs $regexSymbols = '/[\x{1F300}-\x{1F5FF}]/u'; $clean_text = preg_replace($regexSymbols, '', $clean_text); // Match Transport And Map Symbols $regexTransport = '/[\x{1F680}-\x{1F6FF}]/u'; $clean_text = preg_replace($regexTransport, '', $clean_text); // Match Miscellaneous Symbols $regexMisc = '/[\x{2600}-\x{26FF}]/u'; $clean_text = preg_replace($regexMisc, '', $clean_text); // Match Dingbats $regexDingbats = '/[\x{2700}-\x{27BF}]/u'; $clean_text = preg_replace($regexDingbats, '', $clean_text); return $clean_text; } ``` 最终我使用了方案二,没毛病,就是稍微烦点,搜索条件啥的记得转码就是了。
data.update.last
sys.time.ago
punc.commaarticle.create.bypunc.commaarticle.file.inpunc.colon
MySQL
©app.copyright.year
app.author
·
app.ICP
sys.donate
alipay._self
wechat._self