Как добавить CP-1252 в CentOS

Как добавить CP-1252 в CentOS

Мы обрабатываем файлы, которые наши клиенты сгенерировали на своих локальных машинах Windows, которые используют набор символов CP-1252. Иногда при обработке одного из этих файлов в нашем бэкенде (работающем на CentOS) мы получаем ошибки времени выполнения (это бэкенд Java, так что RuntimeExceptions). Если мы удаленно подключаемся к серверу, переименовываем файл (используя UTF-8) и перезапускаем его, файл обрабатывается совершенно нормально.

Есть ли способ «добавить» CP-1252 к доступным наборам символов CentOS, чтобы это прекратилось?

решение1

Ознакомьтесь с этим отчетом об ошибке от Oracle относительно поведения Javabug_id=4733494относящийся к "локали по умолчанию". Согласно этому отчету об ошибке (на самом деле Sun/Oracle говорит, что это поведение на самом деле не ошибка, а просто то, как была разработана Java), от Sun/Oracle:

В версиях JDK до 1.4 мы всегда принудительно устанавливали локаль "C" на набор символов ISO8859-1. В версиях 1.4 и более поздних мы поддерживаем локаль "C", которая требует ограничения до 7-битного ASCII.

Рекомендуется установить переменную окружения LC_ALLв en_US.ISO8859-1соответствии с локалью системы es_ES.ISO-8859-1и т. д.

Добавление:

export LC_ALL="en_US.ISO-8859-1"

Командный файл, который запускает ваш Java-бэкенд, должен решить проблему.

Это также задокументировано в вопросе SO:https://stackoverflow.com/questions/5663709/how-to-fix-java-when-if-refused-to-open-a-file-with-special-charater-in-filename

Связанный контент