xml:无法追踪无效字符

问题描述 投票:0回答:1

我正在尝试通过xslt转换xml文件,但是无法跟踪导致解析器阻塞该文件的字符。在转换期间,出现此错误:

myfile.xml:1: parser error : Input is not proper UTF-8, indicate encoding !
Bytes: 0xBC 0x29 0x20 0x69
g said premises on the West which does not encroach over one and one quarter (1 
                                                                           ^
unable to parse myfile.xml

当我在不同编辑器中搜索该位置时,一些编辑器会理解代码并显示其呈现的字符:

over one and one quarter (1 ¼)

和其他编辑器不显示默认系统字符:

uarter (1 �)

我可以手动将文件搜索到该位置,如果是该字符,则将其确定为supposed to be ¼,但是我希望能够在运行转换之前找到并替换那些字符。

反正有没有确定应该为上面的字节信息提供什么替换?

这是xml序言

<?xml version="1.0" encoding="UTF-8"?>

当我使用上面的字符串并在Java中创建一个char数组和byte数组时,我得到

char : ¼ bytes -68

并且如果我进行测试:

if (c == '\u00BC') {
            System.out.println("matched one quarter!");
}

然后匹配...是否有一种简单的方法可以在Java中循环并以这种方式进行查找/替换?

查找/替换需要在xslt转换之前完成,因为解析错误会在开始之前阻塞该过程;我认为总体问题是,识别坏字符并将其替换为十进制实体的最佳方法是什么?如上所示,一些编辑器渲染了字符,另一些则抛出错误并替换为“?”或其他一些系统字符。

我认为到目前为止,java char测试似乎是最好的解决方案。

xml xslt utf-8 character-encoding
1个回答
0
投票

在面值上取“输入不正确的UTF-8”,并且在UTF-8中“¼”为0xC2 0xBC,并采用“指示编码!”从表面上看,我想你应该回到文件或规范的源头,或者获取任何信息,然后告诉XSLT处理器文件的字符编码。

好吧,既然您已经显示XML声明为UTF-8,那么您的文件是无效的。完全没有XSLT处理器必须处理它。将其发送回发起者。

© www.soinside.com 2019 - 2024. All rights reserved.