【问题标题】:uGUI Text Field, How to Remove "Replacement Characters" (uFFFD aka �)?uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?
【发布时间】:2020-04-20 00:53:20
【问题描述】:

使用 uGUI 文本组件,我得到了“替换字符”,也就是我找不到删除它们的方法。

我从 Instagram api 获得一个字符串,其中包含我需要的两个非字母语言字符(例如日语)的 unicode 字符。

但是,表情符号的 unicode 字符作为替换字符出现,即 �。 我不需要表情符号,它们可以被删除,但是我找不到这样做的方法。

我无法使用 TextMeshPro,因为我无法生成具有显示各种语言所需的所有 unicode 字符的字体资源(这可能是用户错误,但当我尝试该过程时会挂起)。

我注意到这些 � 字符不会出现在 Inspector 或控制台中,因此必须有一种方法可以忽略或删除它们。

我正在设置这样的字符串

body.text = System.Uri.UnescapeDataString(postData.text);

我尝试了很多没有用的方法,包括

    body.text = body.text.Replace('\uFFFD','\'');//doesn't work
    body.text = Regex.Replace(body.text, @"^[\ufffd]", string.Empty);//doesn't work

我也尝试将字符串分解为 char 数组。当我尝试打印到控制台时,遇到替换字符时出现此错误:

    foreach (char item in postData.text.ToCharArray())
                print(item); //Error: UTF-16 to UTF-8 conversion failed because the input string is invalid

对此的任何帮助将不胜感激! 谢谢。

Unity 2018.4.4,c#

【问题讨论】:

    标签: c# unity3d unicode emoji character-replacement


    【解决方案1】:

    找到答案了! 这篇文章提供了一个解决方案:How do I remove emoji characters from a string?

    body.text = Regex.Replace(body.text, @"\p{Cs}", "");
    

    【讨论】:

    • 我想说 Unity 在组合字符方面仍然存在问题(例如,试试这个字符串 i̇ ï ị i̤),但看起来他们在 2018.3.7 和 2019.1.7 之间修复了这个问题。我能找到的唯一渲染不完美的字符是,看起来更像=​̸
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 2019-06-12
    • 1970-01-01
    • 1970-01-01
    • 2010-12-01
    相关资源
    最近更新 更多