在安卓系统中显示Unicode字符?

8

我创建了一个消息应用程序,发现很多成员不在北美或英国。当他们发布消息时,只返回乱码。所有存储数据的数据库列都是UTF-8格式。

有没有办法正确显示某人输入的UTF-8字符?请参见下面的屏幕截图。

Android screenshot of invalid characters

1个回答

7

简单的方法:使用适当的字体。

更准确地说,如果您想正确显示它们,则端点应具有定义Unicode字符的字体。我不知道这是否适用于Android,但您应该尝试将完整的UTF-8字体与应用程序一起嵌入,因为您不知道居民字体定义了什么(Droid系列可以由供应商或高级用户替换)。

首先使用原始的Droid字体系列进行测试(您可以在android.git.kernel.org上找到它),找到一个可在您的应用程序中重新分发的字体系列并在应用程序中使用它。我从未使用过,但我觉得handcent提供了不同的字体包(用于外观和感觉,但肯定是用于Unicode区域)。

Renaud

可以在Android git存储库中找到: - DroidSansArabic.ttf 定义阿拉伯语间隔(U+6000-U+06FF 94/250及更多) - DroidSansHebrew.ttf 定义希伯来语间隔(U+0590-U+05FF 87/87)… …(使用fontforge检查)


有点残忍,我需要在其他地方找到一个字体来完成这个任务。我应该如何将我下载的ttf字体应用到应用程序/活动/视图中呢? - Kevin Parker
从未在Android上做过这件事,但我有一些数字排版的经验...请参考此帖子开始...无论如何,我都对任何反馈感兴趣。 - Renaud
我在这方面仍然进展很少。我已经能够加载第三方字体,但问题现在似乎更加复杂。我尝试使用GNU Unicode字体,但没有成功,因为该字体太大了,高达13MB,设备无法加载。看起来设备有一个硬编码的3MB限制。 - Kevin Parker
这可能不仅仅是字体问题。我已经添加了在Android SDK中找到的DroidSans文件,并将其应用于TextView。然而,字符仍然显示为方框。 - Kevin Parker
你是否尝试用DroidSans{日文|希伯来文|阿拉伯文}之一替换DroidSans,以了解正确显示输入文本所需的间隔?我不记得在哪里读到过,但大多数桌面字体都不适应Android(字距不良等)...最好制作一个包含静态UTF-8文本的样本单元应用程序,以检查Unicode间隔覆盖范围(添加到我的可能/某天列表中;)) - Renaud
我不打算根据所涉及的语言在每个TextView上应用不同的字体。如果我能够应用一个包含世界上主要语言(如GNU Unifont,但它太大了)的字体,那就太理想了。 - Kevin Parker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接