【发布时间】:2016-09-26 18:13:22
【问题描述】:
在我的 Android 应用程序中保存 XML 数据文件时,当用户输入表情符号时出现异常。 据我了解,d83d 字符就是这个:http://apps.timwhitlock.info/unicode/inspect?s=%F0%9F%98%84 - 笑脸????字符。
相关的堆栈跟踪:
java.lang.IllegalArgumentException: Illegal character (d83d)
at org.kxml2.io.KXmlSerializer.reportInvalidCharacter(KXmlSerializer.java:144)
at org.kxml2.io.KXmlSerializer.writeEscaped(KXmlSerializer.java:130)
at org.kxml2.io.KXmlSerializer.attribute(KXmlSerializer.java:465)
最重要的问题是:我该如何解决它,这样我的用户才不会遇到应用在表情符号上崩溃...
后续问题是:
这个 KXmlSerializer 是否应该支持 emoji/Unicode?p>
某处有更新版本吗?到目前为止我找不到它。 该库是否得到积极维护?
谁在维护 KXmlSerializer? 是http://kxml.org/ 吗?我在那里找不到很多东西......
如果放在 class-path 上,更新版本会不会与 Android 内置版本发生冲突?
我应该/可以使用哪些其他 xml 编写库来替换 KXmlSerializer?
编辑:我要补充一点,应用程序通过 xml 保存的文本来自标准的 Android EditText UI 小部件,用户可以在其中输入文本(我没有对字符串进行任何 Unicode 级别的操作)。
【问题讨论】:
-
这个补丁可能是相关的:android.googlesource.com/platform/libcore/+/3f1a5eb%5E! 但我想知道从哪里获得正确的二进制文件。
-
Android 联系人与表情符号同步的可能相关问题:code.google.com/p/android/issues/detail?id=64108。一位项目成员写道“我在 L 中修复了 KXmlSerializer。”
-
你知道你是如何解决这个问题的吗?我还想知道在哪里可以找到具有该修复程序的最新依赖项。它仍然向我显示 2.3.0,我猜它最后一次更新是在 2009 年。
标签: java android xml unicode xml-serialization