Android TextView 中的某些 unicode 字符无意中转换为标志表情符号

Certain unicode characters unintentionally get converted to flag emoji in Android TextView

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

一个字符总是对应两个unicode字符: 第一个始终是 '\uD83C' (55356),例如 'A' 后面跟着 '\uDDF9' (56825)('B' 等是 56826)。设置文本通常可以正常工作,但只要文本包含与国家/地区编码对应的子字符串(如西班牙的 'ES'),它就不会显示这两个字符,而是显示标志。

我已经尝试理解这种行为并搜索了转弯的可能性我没有找到任何解决方案

示例:

我想显示这些字符:

作为字符数组的字符串值:

我的 TextView 中的结果:

你能帮我找到一种方法来禁用这种行为吗?我已经看到它在其他应用程序中工作。

您使用的字符仅用于制作旗帜表情符号;它们没有其他用途,也不打算用于“花哨”的文本。显示有效区域代码的标志是他们唯一正确的行为。

如果您绝对必须在不发生这种情况的情况下使用它们,则需要在每个字母之间插入不可见字符以分解连字,例如 U+200C(零宽度非连接符)或 U+2060(字连接符).