首页 > 解决方案 > Flutter:用特殊字符解析 Json (utf-8)

问题描述

我有一个非常基本的 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 文件?

标签: phpjsonparsingflutterutf-8

解决方案


推荐阅读