【发布时间】:2013-04-12 14:37:16
【问题描述】:
XMLStreamReader->Location 有一个名为getCharacterOffset() 的方法。
不幸的是,Javadocs 指出这是一个模棱两可的方法:它还可以返回一个字节偏移量(这在实践中似乎是正确的);从文件中读取(例如)时似乎会发生这种情况:
Javadoc 声明:
将字节或字符偏移量返回到输入源 this 位置指向。如果输入源是文件或字节 stream 那么这是该流中的字节偏移量,但如果输入 source 是字符媒体,那么偏移量就是字符偏移量。 (强调)
我真的需要 字符 偏移量;而且我很确定我得到的是 byte 偏移量。
(UTF-8 编码)XML 包含在(部分损坏的 1G)文件中。 [因此需要使用较低级别的 API,它不会抱怨缺乏良好的格式,除非它真的别无选择]。
问题
Javadoc 说“...输入源是字符媒体...”是什么意思:我如何强制它将我的输入文件视为“字符媒体” - 这样我才能获得准确的 (字符)偏移而不是字节偏移?
额外的废话:
[ 我很确定这是怎么回事 - 当我剥离文件时(使用某些已知的高级标签),我得到一些字符丢失或额外 - 以非累积方式 - 我是将差异归结为几个多字节字符抛出计数器:同样当我复制时(例如在 Powershell 中使用'head'/'tail' - 这个工具似乎可以正确识别[或假设 UTF-8] 并执行据我所知,转换为 UTF-16 的效果很好]
【问题讨论】: