Unicode line separator 导致 wx.request 挂掉。
发布于 6 年前 作者 yaoli 3108 次浏览 来自 问答

这个 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

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

4 回复

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

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

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

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

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

回到顶部