【发布时间】:2010-10-26 02:29:31
【问题描述】:
互联网上有很多关于这个主题的帖子,但是没有一个能够隔离和解决问题。
我正在尝试使用 TextView 显示存储在 SQLite 数据库中的一些特殊的 UTF-8 编码符号,但它显示的只是框。我明白这意味着没有安装正确的字体。但是当我在 Mac 上使用 Arial 字体打印这些符号时,它可以工作。
我正在尝试在设备和模拟器上使用 Arial 字体。
任何建议。
【问题讨论】:
标签: android
互联网上有很多关于这个主题的帖子,但是没有一个能够隔离和解决问题。
我正在尝试使用 TextView 显示存储在 SQLite 数据库中的一些特殊的 UTF-8 编码符号,但它显示的只是框。我明白这意味着没有安装正确的字体。但是当我在 Mac 上使用 Arial 字体打印这些符号时,它可以工作。
我正在尝试在设备和模拟器上使用 Arial 字体。
任何建议。
【问题讨论】:
标签: android
它适用于您的 Mac,因为您的 Mac 使用的字体包含这些特殊字符。创建包含 unicode 中定义的所有字符的字体文件是不可能的。中文字体就是一个很好的例子:它们都不包含所有已知的约 60.000 个中文字符,因为字体文件会很大且无法使用。
您可以尝试在 android 上使用 Mac 上的字体(可能是版权问题 - 尝试查找包含字符的免费字体:将 (ttf) 文件打包到您的应用程序中,例如在 /assets 文件夹中,然后在您的应用程序中加载该字体
TypeFace typeFace = Typeface.createFromAsset(assetmanager,"fontfile.ttf");
然后您可以像这样在 TextView 中使用它:
TextView 视图 = (TextView) findById(R.id.mytext);
view.setTypeFace(typeFace);
【讨论】:
如果我正确理解您的情况,您可能需要考虑 StringEscapeUtils.unescapeXml() 方法。它位于此处的 common-lang.jar 文件中:http://commons.apache.org/lang/
它将采用编码符号(例如 ' 表示撇号)并让您找到正确的字符。
【讨论】: