gpt4 book ai didi

java - 特殊字符的问题

转载 作者:行者123 更新时间:2023-12-01 16:03:13 25 4
gpt4 key购买 nike

我对这个特殊字符的典型问题感到困扰。

我们有一个在生产 tomcat 服务器(安装在 Linux 上)中运行的 mbean,它获取 xml 提要并发送以进行进一步处理。当 mbean 必须处理被“??”替换的特殊字符时,问题就会出现。分数。 本地开发和 QA 服务器中提供了相同的代码,运行良好尽管操作系统版本、tomcat 版本都相同。读取 xml feed 并发送到 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 队列。日志文件将特殊字符显示为 ?? 'Only in Prod' 带有特殊字符的 Xml feed 如下:

<?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>*

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

  1. 在 Tomcat 的 server.xml 中将 URI 编码为 utf-8。
  2. 已验证 Linux 上的 LANG 环境变量为 en_US.UTF-8。
  3. 已验证 xml 文件的默认编码为无 BOM 的 UTF8。

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

最佳答案

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

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

关于java - 特殊字符的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3290880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com