小程序微信授权登录,我们的测试同事的微信昵称比较萌萌哒【阿哒~!?】,有两只熊掌,就是这两只掌导致在使用json_encode()处理接收的数据,直接返回了null值,导致接收不到数据。

1629443481(1).jpg

通过json_last_error()函数获得错误码 5 ,得知有异常的 UTF-8 字符,也许是因为不正确的编码。

想了个方法,让前端在请求数据把参数base64处理下,我接收数据时再base64解析出来,这个过程没有问题,但是我们接口请求有记录的操作,

Image

这时报错:

General error: 1366 Incorrect string value: '\xF0\x9F\x98\x83\xF0\x9F...' for column 'content' at row 1             

json_encode($data, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT)

的意思就是中文不转义,保留中文字符的意思,就是你的字符串在json编码的时候会保留中文,其它的都会被转义。

查看json_encode()文档其中第二个参数的预定义常量中,JSON_PARTIAL_OUTPUT_ON_ERROR 文档解释:Substitute some unencodable values instead of failing.(替换一些不可编码的值,而不是失败)这不就是我现在的情况么,替换一些不可编码的值,测试=>通过。

总结:

平常只用JSON_UNESCAPED_UNICODE 就可以了。如果有emoji表情就用JSON_PARTIAL_OUTPUT_ON_ERROR 常量进行编码,否则要抛出异常。

点赞(2) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿
立即
联系

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部