如何在颤振中动态显示来自 json 响应的 Unicode Smiley

问题描述

如何在Flutter中从json响应动态显示Unicode Smiley。当我将字符串声明为静态时它可以正确显示,但从动态响应中它不能正确显示笑脸。

静态声明:(工作)

child: Text("\ud83d\ude0e\ud83d\ude0eThis is just test notification..\ud83d\ude0e\ud83d\ude0e\ud83d\udcaf\ud83d\ude4c")

动态响应:

"message":"\\ud83d\\ude4c Be Safe at your home \\ud83c\\udfe0",

当我解析并将此响应传递给 Text 时,它会将 Unicode 视为字符串并显示为字符串而不是 Smiley 代码如下以显示带有笑脸的文本:

child: Text(_listData[index].message.toString().replaceAll("\\\\","\\"))

已经通过这个:Question 但它只在单个 unicode 不能与多个 unicode 一起工作时有效。

任何处理过文本和 unicode 字符显示的人都请告诉我。

解决方法

我要为取消转义字符提供的另一个替代好解决方案是: 第一个 ->

  String s = "\\ud83d\\ude0e Be Safe at your home \\ud83c\\ude0e";

  String q = s.replaceAll("\\\\","\\");

这将打印并且无法转义字符:

\ud83d\ud83d Be Safe at your home \ud83c\ud83d

及以上将是输出。

所以人们可以做的是在解析或使用时取消转义它们:

String convertStringToUnicode(String content) {
  String regex = "\\u";
  int offset = content.indexOf(regex) + regex.length;
  while(offset > 1){
    int limit = offset + 4;
    String str = content.substring(offset,limit);
//     print(str);
    if(str!=null && str.isNotEmpty){
      String uni = String.fromCharCode(int.parse(str,radix:16));
 
   
      content = content.replaceFirst(regex+str,uni);
//       print(content);
      
    }
    offset = content.indexOf(regex) + regex.length;
//     print(offset);
  }
  return content;
  
}

这将替换所有文字并将其转换为 Unicode 字符以及 emoji 的结果和输出:

String k = convertStringToUnicode(q);
print(k);

? Be Safe at your home ?

上面就是输出。 注意:上面给出的答案同样有效,但这只是当您想要使用 unescape 功能并且不需要使用第三方库时。

您可以使用带有多个 unescape 解决方案的 switch case 扩展它。

,

使用以下代码片段解决了问题。

  Client client = Client();
  final response = await client.get(Uri.parse('YOUR_API_URL'));
  if (response.statusCode == 200) {
    // If the server did return a 200 OK response,// then parse the JSON.
    final extractedData = json.decode(response.body.replaceAll("\\\\","\\"));
        }

这里我们需要将双反斜杠替换为单反斜杠,然后在设置成这样的文本之前解码JSON响应,我们可以像这样显示多个unicode:

最终提取的数据 = json.decode(response.body.replaceAll("\\","\"));

希望这个回答对其他人有帮助

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...