我有一个非常奇怪的错误(消息是:org.xml.sax.SAXParseException Invalid byte 2 of 3-byte UTF-8 sequence.
)我得到此错误的位置是第一个出现问题的字符(在我的情况下为“é”)出现的位置。我正在尝试使用javax xml和验证器工具解析xml文件。我使用两个相互通信的Wildfly服务器,发送和接收xml文件。问题是,每当我收到响应文件时,编码都会出现问题。我使用String而不是InputStream来读取我的响应实体的原因是,因为我想多次使用响应主体,并且以后不想使用IOUtils。
Response response = webTarget.request()
.post(Entity.entity(xmlBody, MediaType.APPLICATION_XML));
String responseBody = response.readEntity(String.class);
如果我在此处使用System.out.println(responseBody)
,则接收到的xml中的字符(á,ű,é,ő,ú,ö,ü,í)将显示为非UTF-8字符。我的示例xml,发件人请求和日志控制台编码均设置为UTF-8,因此这可能不是问题。我认为可能有两件事会导致此问题:
(response.setEnc(encoding))
。有趣的事实:当我尝试调试自己的东西时,即使System.out
打印格式错误的字符,文件组件也是正确的。