zoukankan      html  css  js  c++  java
  • 微信公众号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能转为数组

  • 相关阅读:
    复制某文件夹及其子文件夹中的一定大小的文件
    一个简单的查询脚本
    写一个交互的脚本
    nginx+php5.6.12+discuz
    curl 错误
    python 交互界面tab补全
    uwsgi.xml
    supervisorctl
    认识nginx配置文件
    nginx+uwsgi+django 配置3
  • 原文地址:https://www.cnblogs.com/ikodota/p/found_some_control_char_in_wechat_api.html
Copyright © 2011-2022 走看看