我有一个非常基本的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文件正确吗?
1条答案
按热度按时间z9zf31ra1#
你可以使用
Response.body
或Response.bodyBytes
来获取http Response的正文。使用bodyBytes的好处是它直接获取字节。如果你希望通过解析字节来显示图像,这是一个常见的用法。如果你希望看到普通的字符串,这是一个常见的用法。由于您希望从http响应中获得特殊字符,因此最好在使用
utf8.decode()
之前直接获取其字节