V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kwklover
V2EX  ›  C#

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

  •  
  •   kwklover · 2018-05-15 20:10:19 +08:00 · 3490 次点击
    这是一个创建于 2377 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于默认情况,低版本的 MYSQL 的 UTF 存储字节默认是 3 字节的,而微信登陆获取用户昵称是 4 字节的 UTF8 编码,所以存入 MYSQL 的时候,就出错了,当然在 MYSQL5.5 之后可以把字段改为支持 utf8mb4 的编码,但为了兼容低版本,我采用了一种折中方案,干脆过滤掉 Emoji 字符。

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

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

    提供思路也可以的。
    第 1 条附言  ·  2018-06-01 10:13:47 +08:00
    本系统已经开源,欢迎大家前往: https://gitee.com/keke11/OdnShop/
    7 条回复    2018-08-20 11:01:40 +08:00
    batnss
        1
    batnss  
       2018-05-15 20:17:22 +08:00
    最简单的就是把昵称等包含 emoji 的 urlencode(或者别的可以 encode/decode 的)下
    kwklover
        2
    kwklover  
    OP
       2018-05-15 21:31:08 +08:00 via Android
    @batnss 也试过这样的方案,把昵称 encode 后,变得超长了
    ETiV
        3
    ETiV  
       2018-05-16 01:15:59 +08:00
    用 blob 存?
    kwklover
        4
    kwklover  
    OP
       2018-05-16 10:38:33 +08:00
    @ETiV 后台如果需要按昵称搜索某个用户的时候,也不方便吧?
    xuanbg
        5
    xuanbg  
       2018-08-20 07:03:47 +08:00
    utf8-mb4 了解一下
    xuanbg
        6
    xuanbg  
       2018-08-20 07:18:06 +08:00
    不是太清楚楼主为什么还要兼容 5.5 之前版本,如果不是必要,完全可以 5.6 版本起步。如果非要存 Emoji,就只能自己在实体类里面转码了,查询时也是转码后再作为条件去查,问题就是模糊查询是没办法了。
    kwklover
        7
    kwklover  
    OP
       2018-08-20 11:01:40 +08:00 via Android
    @xuanbg 做产品,还是尽可能向下兼容吧,现在都 2018 了,但是 win2003 依然很多人用。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2493 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.