ASP.NET+MYSQL 获取微信登陆的昵称,无法存入 MYSQL 的解决方案

2018-05-15 20:10:19 +08:00
 kwklover
由于默认情况,低版本的 MYSQL 的 UTF 存储字节默认是 3 字节的,而微信登陆获取用户昵称是 4 字节的 UTF8 编码,所以存入 MYSQL 的时候,就出错了,当然在 MYSQL5.5 之后可以把字段改为支持 utf8mb4 的编码,但为了兼容低版本,我采用了一种折中方案,干脆过滤掉 Emoji 字符。

有没有其他更优雅的解决方案?既可以兼容低版本的 MYSQL,又保留 Emoji 字符?

这个是我在开发一个微商城系统 http://www.qizhanbang.com 发现的问题,看看大家有没有更好的解决方案?

提供思路也可以的。
3372 次点击
所在节点    C#
7 条回复
batnss
2018-05-15 20:17:22 +08:00
最简单的就是把昵称等包含 emoji 的 urlencode(或者别的可以 encode/decode 的)下
kwklover
2018-05-15 21:31:08 +08:00
@batnss 也试过这样的方案,把昵称 encode 后,变得超长了
ETiV
2018-05-16 01:15:59 +08:00
用 blob 存?
kwklover
2018-05-16 10:38:33 +08:00
@ETiV 后台如果需要按昵称搜索某个用户的时候,也不方便吧?
xuanbg
2018-08-20 07:03:47 +08:00
utf8-mb4 了解一下
xuanbg
2018-08-20 07:18:06 +08:00
不是太清楚楼主为什么还要兼容 5.5 之前版本,如果不是必要,完全可以 5.6 版本起步。如果非要存 Emoji,就只能自己在实体类里面转码了,查询时也是转码后再作为条件去查,问题就是模糊查询是没办法了。
kwklover
2018-08-20 11:01:40 +08:00
@xuanbg 做产品,还是尽可能向下兼容吧,现在都 2018 了,但是 win2003 依然很多人用。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/455068

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX