uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?
Posted
技术标签:
【中文标题】uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?【英文标题】:uGUI Text Field, How to Remove "Replacement Characters" (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#
【问题讨论】:
【参考方案1】:找到答案了! 这篇文章提供了一个解决方案:How do I remove emoji characters from a string?
body.text = Regex.Replace(body.text, @"\pCs", "");
【讨论】:
我想说 Unity 在组合字符方面仍然存在问题(例如,试试这个字符串i̇ ï ị i̤
),但看起来他们在 2018.3.7 和 2019.1.7 之间修复了这个问题。我能找到的唯一渲染不完美的字符是≠
,看起来更像≠
。以上是关于uGUI 文本字段,如何删除“替换字符”(uFFFD aka �)?的主要内容,如果未能解决你的问题,请参考以下文章