Ошибки при чтении итальянских символов через сервер Tomcat

Я читаю файл CSV через CSVReader Apache в приложении Java. Этот CSV содержит некоторые итальянские символы, такие как "è". Когда я запускаю это приложение на своем локальном сервере Tomcat, оно правильно читает эти символы. но когда я развертываю то же самое приложение на удаленном сервере Tomcat. Затем он читает эти символы как "?".

Примечание: в обоих случаях развернутое приложение одинаково, файл CSV одинаков, доступ к приложению осуществляется из одной и той же системы. Разница лишь в том, что один работает на локальном компьютере, а другой на удаленном компьютере.

Я читаю этот файл через InputStreamreader. У любого есть идея, в чем может быть проблема?

2 ответа

Вероятно, вы пропустили указание кодировки символов, в которой кодируется файл CSV.

http://docs.oracle.com/javase/6/docs/api/java/io/InputStreamReader.html

Возможно, указание этого в конструкторе InputStreamReader может решить вашу проблему.

Если вы не укажете один, он использует кодировку символов по умолчанию, которая, боюсь, может измениться в зависимости от виртуальной машины Java, как указано здесь:

http://docs.oracle.com/javase/1.5.0/docs/api/java/nio/charset/Charset.html

Сравните настройки локали.

На уровне операционной системы, например в Linux, это:

$ echo $ LANG de_DE.UTF-8

В Java проверьте файл.encoding в системных свойствах:

file.encoding = [UTF-8]

Если вы не хотите полагаться на настройки в операционной системе, явно передайте кодировку в своем коде.

Другие вопросы по тегам