某些Unicode字符在Android TextView中无意间转换为标志表情符号

时间:2019-01-10 12:31:51

标签: android unicode textview

我正在尝试使用特殊的unicode字符(看起来像字母)在android应用中显示文本。

一个字符始终对应于两个unicode字符: 第一个始终是'\ uD83C'(55356),例如,对于'A'由'\ uDDF9'(56825)跟随(例如对于'B'等则是56826 ...)。设置文本通常可以很好地工作,但是只要文本中包含与国家/地区编码相对应的子字符串(如西班牙的“ ES”),它就不会显示两个字符,而是显示标记。

我已经试图理解这种行为,并寻找可能使我没有发现任何溶物的可能性

示例:

我想显示这些字符:

字符串值作为char数组:

结果在我的TextView中:

您能帮我找到一种禁用此行为的方法吗?我已经看到它可以在其他应用程序中工作了。

1 个答案:

答案 0 :(得分:2)

您使用的字符仅存在以产生标志表情符号;它们没有其他目的,也不能用于“精美”文本。显示有效区域代码的标志是它们唯一的正确行为。

如果绝对不能使用它们,则需要在每个字母之间插入不可见的字符以打断连字,例如U + 200C(零宽度非连接符)或U + 2060(字连接符)。