包含emoji表情符号的微信昵称入库失败解决方案
最近,我在微信公众号上进行了著名葡萄酒的投票。要求之一是,在投票后,您可以看到每种葡萄酒最近投票的用户的头像和昵称。我的想法是直接点击投票。获取有投票权的微信用户的openid,使用openid调用微信界面以获取微信用户的昵称和头像URL,并将这两个字段直接输入到我们自己的数据库表中。
问题来了。 。 。一些非主流童鞋的微信昵称中有一些表情符号
类似于这些,在获取微信用户信息后,当用户的昵称和头像URL存储在数据库中时,会报告以下错误:
插入数据时报告错误: ###更新数据库时出错。原因: java.sql.SQLException: 错误的字符串值: 第1行的'bak2'列的'\ xF0 \ x9F \ x98 \ x84'
这是因为: 移动终端上的表情符号表情符号为4个字节,而mysql的utf8编码最多为3个字节微信昵称不支持符号了,因此无法插入。
解决方案:
1: 使用户更加主流,并删除那些凌乱的表情。 。 。不太可能
2: 过滤掉非主流字符。 。 。不是很人道
3: 将mysql编码从utf8转换为utf8mb4可以从根本上解决问题。请参阅以下文章,了解有关如何进行转换的详细信息:
4: 我的解决方案: 由于已经建立了数据库并且有大量的官方数据,出于安全原因,我通过转码解决了它。在存储前先对其进行编码微信昵称不支持符号了,然后在出厂前对其进行解码。虽然有点麻烦,但是可以解决问题。
通过此事件,给我的启示是: 在当今移动互联网的飞速发展中,为避免表情符号表情符号存储失败的问题,建议在建立与移动相关的表之前使用utf8mb4字符集数据库。
Tags标签:微信昵称不支持符号了 微信昵称漂亮符号 微信网名符号昵称大全