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

PHP 做微信二次开发,获取基本信息用户名中含有 Emoji 表情导致写入数据库出错,求解决方案

  •  
  •   hrbwaxdoll · 2015-04-08 16:38:23 +08:00 · 4793 次点击
    这是一个创建于 3547 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT,感谢

    12 条回复    2015-04-27 19:40:55 +08:00
    shiny
        1
    shiny  
       2015-04-08 16:39:04 +08:00   ❤️ 1
    charset 设置为 utf8mb4
    hrbwaxdoll
        2
    hrbwaxdoll  
    OP
       2015-04-08 16:40:19 +08:00
    已有的数据库,CentOS+Mysql,如何修改?刚刚有在其它地方搜索到这个方法,但试了半天无果啊。
    anewg
        3
    anewg  
       2015-04-08 16:46:42 +08:00   ❤️ 1
    lxrmido
        4
    lxrmido  
       2015-04-08 16:46:58 +08:00
    遇上这个问题的时候,我用urlencode临时解决了……
    alex321
        5
    alex321  
       2015-04-08 16:48:36 +08:00
    我用了 base64。。。反正我这里不用按照用户昵称检索。。
    abelyao
        6
    abelyao  
       2015-04-08 17:24:59 +08:00
    @Livid 大大曾发过一个帖子 /t/137724
    pubby
        7
    pubby  
       2015-04-08 17:32:20 +08:00
    不需要作为查询条件的话就用一些转换的办法存,比如json_encode() 后存就绕开了
    hrbwaxdoll
        8
    hrbwaxdoll  
    OP
       2015-04-08 17:50:19 +08:00
    我也不按用户昵称检索,感谢楼下各位,晚上试一下,再来表示感谢。
    raincious
        9
    raincious  
       2015-04-08 18:00:25 +08:00
    @hrbwaxdoll

    PHP+MySQL的话,一楼的方式是最优解,除非你已经有了大量数据,进行编码切换完全不可能的时候。

    编码转换:
    http://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8
    (操作前先备份)
    hrbwaxdoll
        10
    hrbwaxdoll  
    OP
       2015-04-08 22:30:25 +08:00
    @raincious 转换为一楼的格式会不会有其它未知影响?
    @pubby 显示的时候还能显示成图标吗?
    @abelyao 感谢~~~!
    @anewg 已用这个临时解决,然后查询更好的方法,十分感谢。
    @shiny 十分感谢
    raincious
        11
    raincious  
       2015-04-08 23:06:06 +08:00   ❤️ 1
    @hrbwaxdoll

    刚又搜索了下:
    http://dba.stackexchange.com/questions/8239/how-to-easily-convert-utf8-tables-to-utf8mb4-in-mysql-5-5

    里面提到
    > Note, however, that you cannot fully automate the conversion from utf8 to utf8mb4.

    虽然这个答案没被接受,但楼主最好还是备份一个冷的下来按照上面链接里提到的要点和自己项目的状况做测试,看是否会造成问题,这样也最稳妥。

    当然,有的时候最优解也有无法使用的时候,这个时候就只能按照楼上们的说法进行储存时和读取时转换了。
    konakona
        12
    konakona  
       2015-04-27 19:40:55 +08:00
    我想知道可不可以實現數據庫裏(大部分gbk)某一個表(如message)實現utf8mb4然後完美支持表情呢?

    我現在在本機做了這樣的測試,但是效果還沒有出來呢...
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1134 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:39 · PVG 02:39 · LAX 10:39 · JFK 13:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.