【问题标题】:Unicode character 0x25BA not displayed on AndroidUnicode 字符 0x25BA 未在 Android 上显示
【发布时间】:2011-06-09 11:30:01
【问题描述】:

我正在尝试在文本视图中显示 \u25BA unicode character,但是这样做

<TextView android:id="@+id/arrowright" android:layout_width="20dp"
        android:layout_height="240dp" android:gravity="center" android:text="\u25BA"
        android:textSize="14sp" android:textColor="#000000" />

只显示一个空矩形。这适用于其他字符,例如“\u2605”。

android可以显示的字符集有限制吗?

【问题讨论】:

  • 任何设备可以显示的字符集是有限的:如果没有具有指定字形的字体,则无法显示。 no font 提供了整个 Unicode 规范的全面覆盖。
  • 但是是否可以通过程序测试特定字符是否可以通过给定字体显示?
  • @Patrick:有可能在 Android 之外(或有根 Android)。您基本上打开字体文件(它是 OpenType)并根据 OpenType 规范 (microsoft.com/typography/otspec) 解释表格。例如,这就是这个工具的作用:mihai-nita.net/2007/09/08/charmapex-some-kind-of-character-map。 (当然还有大量直接编辑字体的应用程序 :-)
  • @Joachim:通常随 MSOffice 一起安装的 Arial Unicode 字体包含大部分 Unicode 字符。它也相当大,超过 20MB。
  • @ccpizza:根据维基百科,Arial Unicode 的最新版本定义了 50,377 个字形(或 38,917 个字符)。 Unicode 标准 6.0 版定义了 109,449 个字符。我不会称之为“最”。虽然我同意它可能包含大多数人日常需要的大多数字符,但我的基本观点仍然存在:没有字体提供 完整 覆盖(而且这样的字体只会有有限的、专门的用途)。

标签: android unicode


【解决方案1】:

XML 不允许您使用\u Unicode 转义,使用正确的编码,可能是UTF-8 或使用&amp;...; 转义。

是的,字符受当前字体支持的限制。使用字体浏览器检查是否支持所需的字符。

【讨论】:

  • 我可以设置android:text="\u2605"并正确显示相应的unicode字符。我如何知道要使用哪种字体,如何设置?
  • 在下面查看我的答案。我相信最实用的方法是让您的智能手机准备好 Android 中的可能值表。请参阅我提到的应用程序。
【解决方案2】:

尝试在市场上下载Unicode Map,并在开发时随身携带。它使用\uXXXX 表示法。

最后,正如 sorin 所说,请记住(如果您还没有的话)\uXXXX(两个十六进制字节)似乎只能在 strings.xml 中工作(并使用 @string/string_name 格式导入布局)。或者至少它似乎不适用于所有 SDK 或所有环境(这里,我刚刚在 SDK 2.2 上进行了测试,它确实工作)。为了避免麻烦(文字字符串中间的字符等),我不这样做。

由于大多数人从不直接对 XML 布局中的字符串进行硬编码(本地化问题等),这通常不是问题(这就是我使用这种格式的原因)。此外,正如您在上面的应用中看到的那样,这似乎是在 Android 中转义非平凡字符的首选方式。

我个人认为这就是为什么我没有看到很多人使用&amp;#int;,我猜...

希望这会有所帮助!

【讨论】:

  • 顺便说一句,我不是该应用程序的作者。
猜你喜欢
  • 1970-01-01
  • 2014-05-26
  • 2015-11-05
  • 2016-08-25
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2021-11-11
相关资源
最近更新 更多