首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >saxparser忽略字节顺序标记

saxparser忽略字节顺序标记
EN

Stack Overflow用户
提问于 2010-04-16 19:28:46
回答 2查看 1.2K关注 0票数 1

我们的saxparser不会忽略出现在文件开头的字节顺序标记

如何让我的sax解析器忽略字节顺序标记?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-16 19:33:55

看起来您可能会将utf-16输入提供给一个不需要utf-16的saxparser。试着把数据转换成utf-8,可能会有帮助。

票数 1
EN

Stack Overflow用户

发布于 2010-04-16 19:51:21

在十六进制编辑器中检查文件。

如果初始字节确实是后面跟着文档本身的\xEF\xBB\xBF,那么它就是一个UTF8faUUX-BOM。虽然UTF-8的SAX BOM是一个糟糕的错误,生成它们的工具需要用特殊的编程酸来销毁,但是XML规范做了require解析器来识别和忽略这个字节序列,所以如果你的SAX解析器不能识别并忽略这个字节序列,那么它就是不符合的,需要一些改进。

如果为您提供的初始字节实际上是以下内容之一:

代码语言:javascript
运行
复制
\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00

那么你得到的是一个意外的双重编码。在这种情况下,您需要查看生成该文件的程序,因为它不是格式良好的,SAX解析器发出警告是正确的,并且文件中的其他Unicode字符也可能被弄乱。它可能正在做一些愚蠢的事情,比如将文档序列化为一个字节字符串,然后通过一个虚假的解码/编码周期发送它。

无论哪种方式,如果您需要让解析器跳过麻烦的字节序列,您将不得不向它提供一个您手动修改以删除此前缀的版本。如果不知道SAX解析器是什么(甚至不知道是什么语言),就很难说出如何做到这一点。

也许您可以在将输入流传递给解析器之前查找输入流?也许你可以将文件读入一个字节字符串,并将其传递给解析器,去掉了初始字节?如果您的解析器没有为您提供这些选项,您将不得不以字节的形式加载文件,裁剪开头并将其再次保存为新文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2652497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档