• 微信公众号API返回不可打印字符的处理。


    引言

    在使用微信公众号的“批量获取用户基本信息”API时,发现在某些时候不能使用php的json_decode转为数组,打印出curl获取到的内容中,发现了几个不可打印字符。相信不少朋友都应该发现了这个问题吧?

    1.在firefox中,不可打印字符通过特殊的处理可以显示出来具体是哪一个不可打印字符。当然用sublime text也能看到不可打印字符会高亮显示。

    在firefox中显示
    可以看出是x0010和x0090,其中x0010是不可打印字符。
    在sublime text打开,x0010显示为高亮的"DLE",

    2.替换掉不可打印字符后能正常的转为数组了:

    $data = preg_replace('/[x{0}-x{1f}]/u', '', $data);

    3.查看全部的不可打印字符在sublime中显示情况:

    firefox下显示全部不可打印字符

    可以看出每一个“小方框”中的数字是对应的。在谷歌浏览器中是完全过滤掉控制字符的。

    x0000-x000f
    x0010-x001f

    4.这些字符可能是emoji引起,那是不是所有emoji都不能转为数组呢?答案是否定的。

    目前不知道为什么原因导致微信api会返回非可打印字符,但其他utf8mb4编码(主要是emoji)的字符是可以被json_decode的。例如:
    emoji能转为数组

  • 相关阅读:
    SAX方式解析XML文件实例
    DOM方式解析XML文件实例
    国外程序员整理的Java资源
    研发十大站点
    UMA
    [转]Hadoop YARN任务提交流程
    JAVA的内存模型
    2014年总结
    Storm因机器断电等,启动supervisor异常
    Python几个算法实现
  • 原文地址:https://www.cnblogs.com/ikodota/p/found_some_control_char_in_wechat_api.html
Copyright © 2020-2023  润新知