- XMLStreamReader
>Location 有一个名为getCharacterOffset()
.
不幸的是,Javadocs 指出这是一个命名模糊的方法:它还可以返回一个字节偏移量(这在实践中似乎是正确的);从文件读取时(例如)似乎会发生这种情况:
Javadoc指出:
将字节或字符偏移量返回到此位置指向的输入源中。如果输入源是文件或字节流,则这是该流中的字节偏移量,但如果输入源是字符媒体,则偏移量是字符偏移量。(重点补充)
我真的需要字符偏移;而且我很确定我得到的是字节偏移量。
(UTF-8 编码的)XML 包含在(部分损坏的 1G)文件中。[因此需要使用较低级别的 API,它不会抱怨缺乏良好的格式,直到它真的别无选择,只能]。
问题
Javadoc 说“...输入源是字符媒体...”是什么意思:我如何强制它将我的输入文件视为“字符媒体” - 以便我获得准确的(字符)偏移量而不是字节偏移?
额外的废话:
[我很确定这是怎么回事-当我将文件分开时(使用某些已知的高级标签),我丢失了一些字符或多余的字符-以非累积的方式-我将差异减少到几个多字节字符抛出计数器:也是当我复制时(例如在 Powershell 中使用'head'/'tail' - 这个工具似乎可以正确识别[或假设 UTF-8] 并且可以很好地转换为据我所知,UTF-16]