Меня беспокоит эта типичная проблема со специальными символами.Проблема со специальными символами
У нас есть mbean, работающий на сервере производства tomcat (установленный на Linux), который подбирает XML-каналы и отправляет их для дальнейшей обработки. Проблема возникает, когда mbean обрабатывает специальные символы, которые заменяются символом '??' Метки. Тот же код доступен на локальных серверах и серверах QA, которые отлично работают, хотя версия ОС, версия tomcat одинаковы. Часть кода, который считывает канал 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. Файл журнала отображает специальные символы как? 'Только в 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 для кота.
- проверено переменная среды LANG en_US.UTF-8 на linux.
- подтвердил, что XML-файл имеет кодировку по умолчанию как UTF8 без спецификации.
Мы не можем найти причину с сервером Tomcat или операционной системой Linux. Пожалуйста помоги.