java – JAXB错误的说明:1字节UTF-8序列的字节1无效
发布时间:2020-12-14 19:11:28 所属栏目:Java 来源:网络整理
导读:我们正在使用JAXB解析XML文档并收到此错误: [org.xml.sax.SAXParseException: Invalid byte 1 of 1-byte UTF-8 sequence.]at javax.xml.bind.helpers.AbstractUnmarshallerImpl.createUnmarshalException(AbstractUnmarshallerImpl.java:315) 这究竟是什么
我们正在使用JAXB解析XML文档并收到此错误:
这究竟是什么意思,我们如何解决这个问题? 我们正在执行以下代码:
更新 问题似乎是由于XML文件中的这个“有趣”字符:? 为什么会导致这样的问题? 更新2 文件中有两个奇怪的字符.它们位于文件的中间.请注意,该文件是基于数据库中的数据创建的,并且这些奇怪的字符以某种方式进入数据库. 更新3 这是完整的XML代码段:
更新4 请注意,没有<?xml ...?>头. 特殊字符的HEX是BF 最佳答案
所以,问题在于JAXB在没有<?xml ...?>的情况下处理XML文件.标题为UTF-8,当您的文件使用其他一些编码时(可能是ISO-8859-1或Windows-1252,如果0xBF字符实际上意味着?).
如果您可以更改文件的制作者,可以添加<?xml ...?>标头与实际编码规范,或只是使用UTF-8写入文件. 如果您无法更改生成器,则必须使用具有显式编码规范的InputStreamReader,因为(遗憾的是)JAXB不允许更改其默认编码:
但是,这个解决方案很脆弱 – 它输入文件失败了<?xml ...?>标头具有不同的编码规范. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读