收藏
回答

Unicode line separator 导致 wx.request 挂掉。

问题模块
API和组件

这个 bug 的发现过程在这里: https://developers.weixin.qq.com/blogdetail?action=get_post_info&lang=zh_CN&token=231510329&docid=99f032bff8b2a6ccb37ffd4414aa5575


调查结果表明从 excel 复制值出来时,可能会带有 \u2028 和 \u2029,这两个分别作为行分隔符和段落分隔符存在。


考虑微信可能用了 jsonp 的方式去实现了跨域请求,或者其他什么方式,使得即使在接口 response header 中声明 content-type 为 'application/json' 后仍然需要小程序框架这边手动 JSON.parse 返回的字符串。然后导致了上述的错误。


查找了一些文档后,在这里向微信的同学提供一些文档方便理解问题:


https://stackoverflow.com/questions/2965293/javascript-parse-error-on-u2028-unicode-character

https://github.com/expressjs/express/issues/1132

https://github.com/rails/rails/issues/10320


再次恳请微信的同学看一下这个问题,然后给出答复。

最后一次编辑于  2017-12-20
回答关注问题邀请回答
收藏

4 个回答

  • 邓坤力
    邓坤力
    2017-12-22

    你好,问题没有复现,能否提供复现问题的简单 demo 示例和数据示例

    2017-12-22
    赞同
    回复
  • 邓坤力
    邓坤力
    2017-12-22

    你好,已收到反馈,正在跟进

    2017-12-22
    赞同
    回复
  • 吴剑波
    吴剑波
    2018-01-23

    最小复现步骤:编写一个后端接口,返回 JSON 格式数据(Content-Type: application/json; charset=utf-8),其中某字段的 value 包含特殊 '\u2028' (unicode line seperator)


    然后小程序使用 wx.request 请求该接口,如果请求成功,那么小程序会立即崩溃,并打出错误 Unexpected EOF Stack: [native code]

    2018-01-23
    赞同
    回复
  • 吴剑波
    吴剑波
    2017-12-21

    真的打算无视我么?至少回复「收到反馈,开始调查」也 OK 啊!

    2017-12-21
    赞同
    回复