Arrays JSON http.get返回áá;颤振
我正在尝试从URL链接检索JSON。JSON数据由英语和缅甸语组成。然而,当我检索数据时,应用程序显示了一堆转换成“áá”的缅甸语单词。有什么解决办法吗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'); 如果
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));
}
}