Flutter 创建 API 请求并接收带有 - 'Ä' 'Ö' 'Ü' 'ß' 的字符串
Posted
技术标签:
【中文标题】Flutter 创建 API 请求并接收带有 - \'Ä\' \'Ö\' \'Ü\' \'ß\' 的字符串【英文标题】:Flutter create API Request and receive Strings with - 'Ä' 'Ö' 'Ü' 'ß'Flutter 创建 API 请求并接收带有 - 'Ä' 'Ö' 'Ü' 'ß' 的字符串 【发布时间】:2019-07-11 21:24:24 【问题描述】:有没有一种简单的方法可以使用 Darts http - API(在 Flutter 中)在 API 中查询诸如“ä”、“ö”、“ü”之类的德语字母?
API 查询应该将 JSON 字符串下载到 Flutterapp。 不幸的是,json 字符串包含德语特殊字符。
String einleseURL = 'http://xxx.xxx.xxx.xxx/einlesen.json';
final ausgeleseneJsonString = await http.get(Uri.encodeFull(einleseURL));
uiUeberprueft = serializers.deserializeWith(
RenderEbeneErste.serializer, json.decode(ausgeleseneJsonString.body));
我能想到的唯一解决方案是将 jSON 字符串转换为 utf-8 的数值,并将这个新文件保存在服务器上以进行 http 查询。 然后由 Flutter 调用数字列表并在 json.decode() 发生之前使用 utf.decode() 解密。
请参考: How can I convert string to utf8 in Dart?
有没有更简单的方法?
【问题讨论】:
对于 HTTP 请求,德语特殊字符没有什么特别之处。你得到的实际结果是什么? 尊敬的君特,感谢您的回复。例如,实际结果是:' "nutzerHilfe": "Beschreibung hinzufügen", '。此外,Flutter 中生成的 UI 看起来与控制台上的输出 debugPrint (ausgeleseneJsonString.body) 完全相同。 如果在浏览器中加载 URL 会得到什么?也许服务器发送的content-type
标头中的charset
部分不正确。也许字符串甚至不是 UTF-8 编码,而是其他编码?
查询通过计算机上的 IIS 运行。 .json 文件在 Notepad ++ 中编码为 utf-8。在浏览器中,即使在不同的设备上,字符串也能正确显示。
非常感谢。使用来自链接页面的稍微修改的源代码,它运行。谢谢!如果有人对源代码感兴趣,我喜欢发布。
【参考方案1】:
我使用了 Dart 的 build_value 序列化程序。 因此,如果 json.decode() 并且序列化成功,则从 JSON 字符串创建一个对象。
这段代码的最后一行解决了特殊字符的问题。
再次感谢!
//Objekte festlegen
RenderEbeneErste uiUeberprueft;
//jSON auslesen, prüfen & Objekt erstellen
String jsonURL = 'http://xxx.xxx.xxx.xxx/eingeleseneJSON.json';
final ausgeleseneDaten = await http.get(Uri.parse(jsonURL));
uiUeberprueft = serializers.deserializeWith(
RenderEbeneErste.serializer, json.decode(utf8.decode(ausgeleseneDaten.bodyBytes)));
【讨论】:
使用 http.dart 包 json.decode(utf8.decode(response.bodyBytes) 有效!!以上是关于Flutter 创建 API 请求并接收带有 - 'Ä' 'Ö' 'Ü' 'ß' 的字符串的主要内容,如果未能解决你的问题,请参考以下文章
flutter 网络请求dio的简单使用以及请求头参数的自定义
Flutter HTTP 请求使用 Basic Auth + 传递用户和密码来接收用户数据