我从我的 api 获取下一个字符串
\n"\xc3\x83 \xc3\x83\xc2\xa9 \xc3\x83\xc2\xad \xc3\x83\xc2\xb3 \xc3\x83\xc2\xba \xc3\x83\xc2\xbc \xc3\x83\xc2\xb1 \\uD83D\\uDE00\\uD83D\\uDE03\\uD83D\\uDE04\\uD83D\\uDE01\\uD83D\\uDE06\\uD83D\\uDE05"\nRun Code Online (Sandbox Code Playgroud)\n来自 json 格式的响应
\n{\n 'apiText': "\xc3\x83 \xc3\x83\xc2\xa9 \xc3\x83\xc2\xad \xc3\x83\xc2\xb3 \xc3\x83\xc2\xba \xc3\x83\xc2\xbc \xc3\x83\xc2\xb1 \\uD83D\\uDE00\\uD83D\\uDE03\\uD83D\\uDE04\\uD83D\\uDE01\\uD83D\\uDE06\\uD83D\\uDE05",\n 'otherInfo': 'etc.',\n .\n .\n .\n}\nRun Code Online (Sandbox Code Playgroud)\n它包含\xc3\x83 \xc3\x83\xc2\xa9 \xc3\x83\xc2\xad \xc3\x83\xc2\xb3 \xc3\x83\xc2\xba \xc3\x83\xc2\xbc \xc3\x83\xc2\xb1未正确编码的重音并且包含表情符号\\uD83D\\uDE00\\uD83D\\uDE03\\uD83D\\uDE04\\uD83D\\uDE01\\uD83D\\uDE06\\uD83D\\uDE05
到目前为止我已经尝试过
\nvar json = jsonDecode(response.body)\nString apiText = json['apiText'];\nList<int> bytes = apiText.codeUnits;\ncomentario = utf8.decode(bytes);\nRun Code Online (Sandbox Code Playgroud)\n但产生一个
\n[ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: FormatException: Invalid UTF-8 byte (at offset 21)
如何获得带有重音符号和表情符号的正确文本?
\njul*_*101 14
根据您致电的事实,response.body我假设您使用的http包确实具有对象body的属性Response。
您应该注意文档中的以下详细信息:
charset这是使用标头字段的参数(如果可用)从 bodyBytes 转换而来的Content-Type。如果不可用或编码名称未知,则根据 RFC 2616 默认使用 latin1。
好吧,它似乎很可能无法找出字符集,因此默认为 latin1,这解释了您的响应是如何混乱的。
解决方案是使用resonse.bodyBytes包含响应中的原始字节的 。utf8.decode(resonse.bodyBytes)然后,如果您确定响应应解析为 UTF-8,则可以使用例如手动解析此内容。
| 归档时间: |
|
| 查看次数: |
5531 次 |
| 最近记录: |