Назад | Перейти на главную страницу

Проблема с кодировкой имени папки в Ubuntu 8.04LTS

Я объясню свою проблему с самого начала, у меня есть сервер Ubuntu 8.04LTS, и я использую приложение Java с Tomcat 6.0.18 и JRE 1.6. Проблема в том, что отображение таких символов, как (é è ç û) заменяется другими странными символами. Я знаю, что это проблема кодировки символов, поэтому пытаюсь добавить кодировку fr_FR.ISO-8859-1 в файле bashrc и /etc/default/locale и я добавил LANG="fr_FR.ISO-8859-1". Я успешно отображаю хорошие символы с удаленной консоли (PuTTY), но та же проблема по-прежнему возникает при вводе текста непосредственно на сервере оболочки.

Например, когда я mkdir папку под названием «Août» я получаю «Ao ♦ t».

Я думаю, что это может быть связано с кодировкой, используемой системным разделом, но я не знаю, как я могу это проверить.

Есть ли у кого-нибудь идеи, как это исправить?

ОБНОВИТЬ: возможно, это констатирует очевидное, но вы должны постоянно использовать ISO-8859-1 или UTF-8 везде, как в общесистемных настройках (/etc/default/locale) и (при необходимости) в настройках Java приложения.

Вам нужно изменить общесистемный языковой стандарт для использования ISO-8859-1 - однако было бы намного чище, если бы приложение поддерживает UTF-8, просто чтобы оно использовало это (через -Dfile.encoding=utf8 на JVM), так как Ubuntu теперь по умолчанию работает в UTF-8.

Обратитесь к документации вашего приложения, чтобы узнать, как установить языковой стандарт и кодировку (например, ISO-8859-1) - если это не предусмотрено, установите Переменная среды JAVA_TOOL_OPTIONS может быть полезно - это может быть в сценарии запуска приложения.

Чтобы настроить Ubuntu на использование ISO-8859-1:

  • Создайте требуемый языковой стандарт Linux, если он еще не существует, и обновите / etc / default / locale через update-locale:
sudo locale-gen fr_FR
sudo update-locale LANG=fr_FR.ISO-8859-1
  • ОБНОВИТЬ: Сделайте похожее редактирование на / etc / окружающая среда
    • не уверен, почему Ubuntu требует этого, но это в моей системе 8.04, которая была чистой установкой, а не обновлением
  • Закройте все приложения и сеансы оболочки и перезапустите их.

В отличие от Windows и Mac, файловые системы в Linux не имеют понятия кодировки символов, поэтому приложение может генерировать файлы с именами путей ISO-8859-1 или UTF-8 по желанию и даже смешивать их в одном каталоге. Вот почему вы можете создать каталог как «Août», и он будет неправильно отображаться в другой оболочке.

С помощью env | egrep "^(LC|LANG)" может быть полезно для проверки настроек переменных локали - похоже, что настройки для вашей локальной оболочки (xterm, GNOME Terminal и т. д.) неверны. Как только у вас будут правильные настройки, поместите их в ~/.bashrc файл для оболочки.

Если у вас есть папки, созданные с неправильной кодировкой в ​​именах путей, взгляните на convmv - это в репозиториях Ubuntu.

Некоторая общая информация о настройке локалей и кодировок символов в этом Gentoo UTF-8 HOWTO - хотя это не для Ubuntu, поэтому некоторые команды отличаются, locale команда такая же, и идеи объяснены достаточно хорошо.

Попробуйте определить LC_ALL так же.

Также, если вы используете xterm, когда видите это локально, попробуйте запустить его с -U параметр.

Однако если у вас проблемы с Tomcat, вам, вероятно, следует установить -Dfile.encoding=utf8 или -Dfile.encoding=iso8859-1 вместо этого в качестве параметров JVM. Возможно вам также понадобится -Duser.region=fr?