【问题标题】:How can I convert a utf8 string to LATIN1 in Dart?如何在 Dart 中将 utf8 字符串转换为 LATIN1?
【发布时间】:2020-05-04 14:55:56
【问题描述】:

我有许多重音转换错误的字符串。我从 API 中获取这些字符串,因此无法以其他编码格式获取它们。例如,字符串 é 从 API 返回为 é。有什么办法可以转换这些字符串以正确显示重音符号?

【问题讨论】:

  • 如何调用这个 web api?如果你例如正在使用 dart:io 您可以获取原始数据并使用正确的字符集手动解析它。
  • 另外,我不确定您的示例是否正确。 UTF-8 中的 é 转换为 C3A9,在 latin1 中将是 é 而不是 ã© (E3A9)。事实上,如果你尝试将ã© 解析为 UTF-8,它只会被解析为无效的 UTF-8。
  • 对不起,我手动插入了ã©,忘记大写a。我会编辑它。
  • @julemand101 我正在使用http/http.dart 包进行 API 调用。

标签: flutter dart utf-8 iso-8859-1


【解决方案1】:

嗯,你可以试试这样的:

import 'dart:convert';

void main() {
  const input = 'é';
  final output = utf8.decode(latin1.encode(input), allowMalformed: true);
  print(output); // é
}

或者,您可以通过在响应对象上使用 bodyBytes 以字节形式从网络调用中获取响应: https://pub.dev/documentation/http/latest/http/Response/bodyBytes.html

并使用:latin1.decode 或服务器发送数据的任何字符集进行解析。

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2015-04-20
    • 2018-12-08
    • 2012-10-03
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2012-02-01
    • 2012-12-09
    相关资源
    最近更新 更多