首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >特殊字符问题

问特殊字符问题
EN

Stack Overflow用户
提问于 2010-07-20 14:16:38
回答 2查看 2.2K关注 0票数 0

我被这个特殊人物的典型问题所困扰。

我们在生产中运行了一个mbean -- tomcat服务器(安装在Linux上),它获取xml提要并发送给进一步处理。当绿豆必须处理被“??”替换的特殊字符时,问题就出现了。伤痕。相同的代码可以在本地开发和QA服务器上使用,虽然操作系统版本、tomcat版本都是相同的,但这两个服务器工作得很好。下面粘贴了读取xml提要并发送到JMS的部分代码:

代码语言:javascript
复制
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队列。日志文件将特殊字符显示为??具有特殊字符的Xml提要如下所示:

代码语言:javascript
复制
<?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>* 

我们尝试了所有的可能性,包括:

在tomcat.

  • verified的server.xml中,LANG环境变量是en_US.UTF-8,在linux.

  • verified中,文件默认编码为UTF8,没有BOM.

我们无法找到原因是Tomcat服务器还是Linux操作系统。请帮帮忙。

EN

回答 2

Stack Overflow用户

发布于 2010-07-20 14:24:10

不要将文章字符串记录为文本。将每个字符转储为十六进制整数。这样你就可以知道是日志记录失败了,还是读取失败了。

我不清楚JMS队列的行为是什么--只是日志记录失败了,还是JMS也失败了?

票数 1
EN

Stack Overflow用户

发布于 2010-07-20 14:51:16

例如,当您通过Log4j进行日志记录时,可以设置日志文件的编码:

代码语言:javascript
复制
<appender name="SOME_LOG" class="org.apache.log4j.RollingFileAppender">
<param name="Encoding" value="UTF-8" />

此外,还必须安装适当的字符集,以正确显示字符。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3290880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档