Flutter 某些字符未正确加载

Flutter 某些字符未正确加载,flutter,dart,flutter-test,flutter-web,Flutter,Dart,Flutter Test,Flutter Web,下面的示例在我的listview中加载数据,但某些字符无效,例如,ÅÄ我正在尝试使用utf8 var jsonData = json.decode(response.body); var jsonData = utf8.decode(response.bodyBytes); 当我使用utf8时,结果是正确的,但在listTile中加载数据时,我得到了引号和错误 //I/flutter ( 4629): {"items":[{"name":"xyšć", //character is OK

下面的示例在我的listview中加载数据,但某些字符无效,例如,ÅÄ我正在尝试使用utf8

var jsonData = json.decode(response.body);

var jsonData = utf8.decode(response.bodyBytes);
当我使用utf8时,结果是正确的,但在listTile中加载数据时,我得到了引号和错误

//I/flutter ( 4629): {"items":[{"name":"xyšć",  //character is OK but get quotation mark
//I/flutter ( 4629): {items: [{name: xyÄÄ,  //wrong character



class Api {
  static Future<dynamic> _get(String url) async {
    try {
      final response = await http.get(url);
      var jsonData = json.decode(response.body);
//I/flatter(4629):{“items”:[{“name”:“xyšć”,//字符可以,但需要引号
//I/flatter(4629):{items:[{名称:xyÄÄ,//字符错误
类Api{
静态未来获取(字符串url)异步{
试一试{
最终响应=等待http.get(url);
var jsonData=json.decode(response.body);

有解决方案吗?

您的服务器可能没有使用
内容类型指定字符集,因此
http
包默认为
Latin-1

结合上面给出的两部分。使用
utf8.Decode
将字节解码为字符串,然后使用
JSON.Decode
将该字符串作为JSON解码为映射

  var jsonData = json.decode(utf8.decode(response.bodyBytes));

另请参见:顺便提一下,创建只包含静态方法的类(如
Api
)并不被认为是好的Dart样式。只需将它们的函数设置为顶级函数即可。