php Flutter:使用特殊字符解析Json(utf-8)

5sxhfpxr  于 2023-03-07  发布在  PHP
关注(0)|答案(1)|浏览(245)

我有一个非常基本的php代码,可以生成包含一些数据的JSON文件:

$json = json_encode($theData, JSON_PRETTY_PRINT | JSON_FORCE_OBJECT | JSON_UNESCAPED_UNICODE);
file_put_contents('api.json', $json);

当我在Flutter应用程序中解析它时,它返回特殊字符,而不是像“éóáêô"这样的字符。
我在Flutter中解析json文件,如下所示:

var data = await http.get("xxxx/api.json", headers: {'Content-Type': 'application/json'});
if (data.statusCode == 200) {
    print('Status Code 200: Ok!');
    var jsonData = json.decode(data.body);

然后,我发现改变:

json.decode(data.body);

签署人:

json.decode(utf8.decode(data.bodyBytes));

问题解决了!

问题是:为什么使用utf8.decode和bodyBytes解决了这个问题?我用PHP创建JSON文件正确吗?

z9zf31ra

z9zf31ra1#

你可以使用Response.bodyResponse.bodyBytes来获取http Response的正文。使用bodyBytes的好处是它直接获取字节。如果你希望通过解析字节来显示图像,这是一个常见的用法。如果你希望看到普通的字符串,这是一个常见的用法。
由于您希望从http响应中获得特殊字符,因此最好在使用utf8.decode()之前直接获取其字节

json.decode(utf8.decode(data.bodyBytes));

相关问题