【问题标题】:Cant display accent marks or "ñ" within Flutter无法在 Flutter 中显示重音符号或“ñ”
【发布时间】:2021-02-22 15:52:34
【问题描述】:

我有一个使用 Java 和 REST 构建的后端,并且在 Android 中使用 Flutter 有这个应用程序,但是当我尝试显示这些字符时出现错误。

例如,最终作品显示的不是“Piña”:

这是我尝试使用 dart:convert 的代码的一部分,但不是很成功:

import 'dart:convert';

class ProductsProvider {
  Future<List<Product>> loadProducts(
      String urlMiddleware, Client client) async {
    final url = '$urlMiddleware${Constants().getProducts}${client.code}';
    final response = await http.get(url,
        headers: <String, String>{'authorization': Constants().basicAuth});
    print('Url');
    print(url);
    json.decode(utf8.decode(response.bodyBytes));
    final List<Product> products = productFromJson(response.body).toList();
    
    return products;
  }

顺便说一句,这是我的模特:

import 'dart:convert';
import 'package:pil_store/models/EnumValues.dart';

List<Product> productFromJson(String str) => List<Product>.from(json.decode(utf8.decode(str.runes.toList())).map((x) => Product.fromJson(x)));

String productToJson(List<Product> data) => json.encode(List<dynamic>.from(data.map((x) => x.toJson())));

我这个Flutter技术还不算老,怎么才能显示正确的字符呢?

【问题讨论】:

  • 您是否能够(使用调试器或类似工具)逐个字符地告诉我们应该说Piña 的字符串由什么组成?这可能与从服务器/数据库到应用程序的过程中的编码问题有关。
  • @nanofarad 我刚刚上传了一小段代码,解释了我想用 dart:convert 做什么。也许你能帮我解决这个问题?
  • 你能分享一下你的回复样本吗

标签: java android flutter


【解决方案1】:

我发现解决方案尝试了一些不同的方法,仅供参考:

class ProductsProvider {
  Future<List<Product>> loadProducts(
      String urlMiddleware, Client client) async {
    final url = '$urlMiddleware${Constants().getProducts}${client.code}';
    final response = await http.get(url,
        headers: <String, String>{'authorization': Constants().basicAuth});
    print('Url');
    print(url);
    final List<Product> products = productFromJson(Utf8Decoder().convert(response.bodyBytes)).toList();
    
    return products;
  }

【讨论】:

  • 这对我也有用,谢谢!
【解决方案2】:

为您的项目添加一些本地化代码,以便您可以正确查看这些字符串。

了解更多关于本地化的信息
https://flutter.dev/docs/development/accessibility-and-localization/internationalization

【讨论】:

  • 如果我没记错的话,您链接的本地化是指本地化固定字符串(例如 UI 元素)的能力,不应影响已本地化字符串的显示方式。跨度>
【解决方案3】:

我会确保使用的字体支持字形。

【讨论】:

    猜你喜欢
    • 2014-01-04
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多