我很担心这个特殊字符的典型问题。特殊字符问题
我们有一个运行在生产tomcat服务器(安装在Linux上)的mbean,它接收xml提要并发送进一步处理。当mbean必须处理由'??'取代的特殊字符时,问题就会出现。分数。 虽然操作系统版本,tomcat版本都是一样的,但本地开发和QA服务器可以使用相同的代码,其工作正常。的代码读取XML饲料和发送给JMS Q上的部分被粘贴在下面:
StringBuffer article = new StringBuffer();
InputStreamReader is = new InputStreamReader(new FileInputStream(pendingFile), "utf-8");
int data;
while ((data = is.read()) != -1) {
article.append((char)data);
}
is.close();
is = null;
log.debug("Read in \n" + article.toString());
try {
js.writeTextMessage(article.toString(), "server", hostName, processor);
} catch (JMSException je) {
log.error("jms exception: " + je.getMessage());
// server probably shutdown
this.stop();
return;
}
以上代码从“待处理档案”读取文件,其附加到StringBuffer的,所述文件读取到一个日志和发布到JMS队列。日志文件显示特殊charas为? '只有在PROD' 有特殊字符的XML资讯是如下:
<?xml version="1.0" encoding="UTF-8"?>
<hedline>
<hl1>
Hotelliyöpymiset: Missä hinta ja palvelu vastaavat toisiaan (tai eivät) - asiakastyytyväisyyden huippukaupungit
</hl1>
</hedline>*
我们尝试了所有其中包括possibilites:
- URI编码为UTF-8 server.xml中为Tomcat。
- 在linux上验证了LANG环境变量是en_US.UTF-8。
- 验证了xml文件的默认编码为UTF8,没有BOM。
我们无法找到原因是否与Tomcat服务器或Linux操作系统有关。请帮忙。