Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays JSON http.get返回áá;颤振_Arrays_Json_Flutter_Dart - Fatal编程技术网

Arrays JSON http.get返回áá;颤振

Arrays JSON http.get返回áá;颤振,arrays,json,flutter,dart,Arrays,Json,Flutter,Dart,我正在尝试从URL链接检索JSON。JSON数据由英语和缅甸语组成。然而,当我检索数据时,应用程序显示了一堆转换成“áá”的缅甸语单词。有什么解决办法吗 class\u GetJsonResultState扩展状态{ @凌驾 小部件构建(构建上下文){ var jsonFileName=“assets/resultlist/resultlist.json”; fetchData()异步{ 最后答复= 等待http.get('https://jsonkeeper.com/b/47QP'); 如果

我正在尝试从URL链接检索JSON。JSON数据由英语和缅甸语组成。然而,当我检索数据时,应用程序显示了一堆转换成“áá”的缅甸语单词。有什么解决办法吗


class\u GetJsonResultState扩展状态{
@凌驾
小部件构建(构建上下文){
var jsonFileName=“assets/resultlist/resultlist.json”;
fetchData()异步{
最后答复=
等待http.get('https://jsonkeeper.com/b/47QP');
如果(response.statusCode==200){
返回(response.body);
}
}
回归未来建设者(
future:fetchData(),
生成器:(上下文,快照){
List myData=json.decode(snapshot.data.toString());
if(myData==null){
返回脚手架(
正文:中(
//加载空值
子对象:CircularProgressIndicator(),
),
);
}否则{
回家(myData:myData);
}
},
);
}
}

这是我应该得到的

如下更改fetchData()函数

fetchData() async {
  final response = await http.get('https://jsonkeeper.com/b/47QP',
      headers: {"charset": "utf-8", "Accept-Charset": "utf-8"});
  if (response.statusCode == 200) {
    return (utf8.decode(response.bodyBytes));
  }
}

这是一个解码问题。只是想澄清背景中发生了什么

Dart http API定义了(如下所述)两种与响应数据交互的方式:

body → String
The body of the response as a string. This is converted from bodyBytes using the charset parameter of the Content-Type header field, if available. If it's unavailable or if the encoding name is unknown, latin1 is used by default, as per RFC 2616.

bodyBytes → Uint8List
The bytes comprising the body of this response.
详情请浏览

所以,在这种情况下,如果您事先知道编码,并且认为它会弄乱,请使用请求编码和字节解码

fetchData() async {
  final response = await http.get('https://jsonkeeper.com/b/47QP',
      headers: {"charset": "utf-8", "Accept-Charset": "utf-8"});
  if (response.statusCode == 200) {
    return (utf8.decode(response.bodyBytes));
  }
}

谢谢它工作得很好,介意解释一下为什么不工作吗?清楚的解释!非常感谢你。
fetchData() async {
  final response = await http.get('https://jsonkeeper.com/b/47QP',
      headers: {"charset": "utf-8", "Accept-Charset": "utf-8"});
  if (response.statusCode == 200) {
    return (utf8.decode(response.bodyBytes));
  }
}