Flutter dart/Flatter中的表情符号和重音编码

Flutter dart/Flatter中的表情符号和重音编码,flutter,dart,Flutter,Dart,我从api中获取下一个字符串 "à é í ó ú ü ñ \uD83D\uDE00\uD83D\uDE03\uD83D\uDE04\uD83D\uDE01\uD83D\uDE06\uD83D\uDE05" 来自json格式的响应 { 'apiText': "à é í ó ú ü ñ \uD83D\uDE00\uD83D\uDE03\uD83D\uDE04\uD83D\uDE01\uD83D\uDE06\uD83D\uDE05&q

我从api中获取下一个字符串

"à é í ó ú ü ñ \uD83D\uDE00\uD83D\uDE03\uD83D\uDE04\uD83D\uDE01\uD83D\uDE06\uD83D\uDE05"
来自json格式的响应

{
    'apiText': "à é í ó ú ü ñ \uD83D\uDE00\uD83D\uDE03\uD83D\uDE04\uD83D\uDE01\uD83D\uDE06\uD83D\uDE05",
    'otherInfo': 'etc.',
    .
    .
    .
}
它包含未正确编码的重音和表情

到目前为止我已经试过了

var json = jsonDecode(response.body)
String apiText = json['apiText'];
List<int> bytes = apiText.codeUnits;
comentario = utf8.decode(bytes);
var json=jsonDecode(response.body)
字符串apiText=json['apiText'];
列表字节=apiText.codeUnits;
comentario=utf8.解码(字节);
但是产生了

[错误:flatter/lib/ui/ui\u dart\u state.cc(166)]未处理的异常:FormatException:无效的UTF-8字节(在偏移量21处)


如何获得带有重音符号和表情符号的正确文本?

基于您调用
response.body
的事实。我假设您使用的是
http
包,该包在
response
对象上具有
body
属性

您应该在文档中注意以下细节:

这是使用
内容类型
标题字段的
字符集
参数从bodyBytes转换而来的(如果可用)。如果不可用或编码名称未知,根据RFC 2616,默认情况下使用latin1

嗯,它似乎很可能无法计算字符集,因此默认为latin1,这解释了您的响应是如何混乱的


解决方案是使用包含响应中原始字节的。然后,如果您确定响应应被解析为UTF-8,则可以使用例如
utf8.decode(resonse.bodyBytes)
手动解析该响应。

您是否查看过:?另外,代码中的
apiText
是什么类型?toString()然后尝试将代码单元解析为UTF-8是没有意义的,因为
String
中的代码单元在Dart中是UTF-16。@julemand101是字符串类型,我编辑了问题以显示类型OK,所以
apiText
确实包含您发布的带有反斜杠的文本?@julemand101是,我从api“ÃéóÃ:üñ\uD83D\uDE00\uD83D\uDE03\uD83D\uDE04\uD83D\uDE01\uD83D\uDE06\uD83D\uDE05”中获得此文本,但“ÃéóóóÃ:ud83;¼Ã±”实际上是带有重音“Áéíóúúúñ”的字符,因此我对其进行编码以获得实际文本,但在编码过程中(“\uD83D\uD83D\udd\udd…”)杀死编码。该api可以发送任何带有类似拉丁语字符和表情符号的文本(这是一个评论系统,这就是我得到的,用户评论)