У нас есть приложение, которое правильно выводит знак £ (фунт), когда приложение запущено на Ma c, но выводит? (знак вопроса) при запуске на тестовом сервере.
Ниже приведен образец кода и сгенерированные выходные данные
LOGGER.debug(" TESTING file.encoding=" + System.getProperty("file.encoding"));
LOGGER.debug(" TESTING Charset.defaultCharset=" + Charset.defaultCharset());
try {
LOGGER.debug(" TESTING InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("/tmp/PrintCharSets.java")).getEncoding() );
} catch (FileNotFoundException e) {
e.printStackTrace();
}
String pound = "£";
LOGGER.debug(
" TESTING - 0 - Test Character [" + pound + "]");
Выходные данные на тестовом сервере
TESTING file.encoding=UTF-8
TESTING Charset.defaultCharset=US-ASCII
TESTING InputStreamReader.getEncoding=ASCII
TESTING - 0 - Test Character [?]
Выходные данные на моем Ma c
TESTING file.encoding=UTF-8
TESTING Charset.defaultCharset=UTF-8
TESTING InputStreamReader.getEncoding=UTF8
TESTING - 0 - Test Character [£]
Полагаю, это связано с кодировкой строки. Мы видим разницу в defaultCharset и кодировке. Однако не могли бы вы посоветовать, как я могу добиться правильного вывода знака £ на тестовом сервере путем внесения изменений в код.
Это приложение будет работать на разных серверах, поэтому я не могу предположить, что кодировка согласована.