Flutter:解析带有特殊字符的 Json (utf-8)

问题描述 投票:0回答:1

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

php json parsing flutter utf-8
1个回答
0
投票

您可以使用 Response.body

Response.bodyBytes
获取 http
Response
正文。使用 bodyBytes 的优点是它直接获取字节。如果您希望通过解析字节显示图像,则通常使用此方法。使用 body - 如果您需要纯字符串,则通常使用它。

由于您期望来自 http 响应的特殊字符,因此最好在使用之前直接获取其字节

utf8.decode()

json.decode(utf8.decode(data.bodyBytes));
© www.soinside.com 2019 - 2024. All rights reserved.