kwklover
V2EX  ›  C#

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

  •  
  •   kwklover · May 15, 2018 · 4167 views
    This topic created in 2961 days ago, the information mentioned may be changed or developed.
    由于默认情况,低版本的 MYSQL 的 UTF 存储字节默认是 3 字节的,而微信登陆获取用户昵称是 4 字节的 UTF8 编码,所以存入 MYSQL 的时候,就出错了,当然在 MYSQL5.5 之后可以把字段改为支持 utf8mb4 的编码,但为了兼容低版本,我采用了一种折中方案,干脆过滤掉 Emoji 字符。

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

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

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