我正在使用LWUIT创建移动应用。
我使用HTMLComponent向用户显示帮助文本。请注意,帮助语言是Farsi(使用阿拉伯字母)。
在大多数手机上它工作正常但在其他手机上(例如三星B3410W)它只显示问号而不是字母。
我设置了HTMLCallback
,但根本没有调用parsingError
。
设置html代码的指令是:
helpComponent.setHTML("<html dir=\"rtl\"><body><p align=\"justify\">" + body + "</p></body></html>", "UTF8", null, true);
其中body
是通过调用DataInputStream.readUTF()
方法读取的字符串。
有没有人知道我错过了什么?
P.S。其他应用部分(Lables,Forms等)对阿拉伯字母没有重大问题。这只是HTMLComponent有问题。
谢谢
我将“UTF8”改为编码为“UTF-8”,现在有问题的手机工作正常。似乎(至少一些)三星模型使用“UTF-8”作为该编码的名称。
但我担心其他手机可能会出现“UTF-8”问题并接受“UTF8”。
我能做些什么才能让它在所有手机上运行?
答案 0 :(得分:2)
由于编码错误,会出现这些问题。我猜你的readUTF()时数据已经被破坏了。进行一个简单的实验,创建一个具有您遇到问题的unicode值的单个字体,并打印出该字符的数值,看它是否与您期望的unicode值匹配。
答案 1 :(得分:1)
这可能是同样的问题: Why arabic font not supported in Samsung mobiles using LWUIT?
当字体类型为'system'时,LWUIT不支持阿拉伯语位图字体 将阿拉伯语支持委托给底层操作系统。如果底层 手机操作系统不包括阿拉伯语支持LWUIT不适用于阿拉伯语。
为了解决这个问题,一些人已经努力实施阿拉伯语 位图字体通过修改LWUIT来支持它。我们没有 自以下以来包含任何这些变化:
一个。它们非常复杂并且依赖于语言。湾他们没有解决 接受投入的问题。 C。大多数阿拉伯语设备 各国应该支持阿拉伯语,因此它是一个非常小的问题。
这些解决方案可能足以满足您的需求,但我个人而言 不会为那一小部分设备付出努力。