Обнаружение проблем с кодировкой в ​​linux box, а не в Windows

Я столкнулся с проблемой кодирования, которая поставила меня в тупик на несколько недель, и, похоже, ничего не работает. У меня есть веб-сайт, который отлично работает на моем локальном компьютере, но когда я загружаю файлы jsp в окно Linux для просмотра, символы, которые раньше отображались нормально, теперь отображаются как причудливые символы.

По какой-то причине некоторые символы отображаются нормально, а другие кодируются некорректно. Весь текст на странице считывается из файлов java .properties и выводится на страницу с помощью bean-компонентов.

Я добавил на страницу метатег для установки кодировки, который ничего не сделал. Я также добавил ‹%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>, но это ничего не дало в окне Linux и фактически привело к появлению ошибок кодирования на моем локальном компьютере с Windows.

Любая помощь будет принята с благодарностью.


person Allen    schedule 22.03.2010    source источник
comment
Проверьте и посмотрите, с какой локалью работает сервер в Linux. (Это будет то, на что установлены переменные среды LC_ALL или LANG.)   -  person Pointy    schedule 22.03.2010


Ответы (4)


Убедитесь, что метод загрузки свойств использует кодировку символов, в которой фактически записаны файлы свойств.

Без явной настройки используется кодировка по умолчанию для файловой системы: ISO-Latin-1 в Windows и UTF-8 в некоторых дистрибутивах Linux.

person Thorbjørn Ravn Andersen    schedule 22.03.2010

Следующее должно работать вместе, чтобы кодировка символов работала правильно в Nixes и Nuxes:

  • кодировка файловой системы
  • кодировка базы данных (похоже, не применяется)
  • кодировка коннектора базы данных
  • Java-внутренняя кодировка строк (UTF-16, если я правильно помню)
  • Кодировка вывода Java
  • Кодировка HTML-страницы

С вашей директивой страницы вы обратились только к последнему пункту. Другими словами, вы указываете браузеру декодировать страницу как UTF-8, но это не то, что вы отправляете.

Взгляните на эту статью (правда, нескольколетней давности), главу 11 в частности.

person cdonner    schedule 22.03.2010

Также проверьте физические файлы на обеих машинах. Я видел, как несколько FTP-клиентов испортили файлы во время передачи. Быстрая проверка — отправить файл как html вместо jsp. Вы получите мусор для всех последовательностей <% %>, но остальной текст должен отображаться без изменений. Вы также убрали сервер приложений из уравнения. Если текст все еще странный, это ваш клиент FTP или WebDAV пытается «помочь».

person Devon_C_Miller    schedule 22.03.2010

Посмотрите на заголовки http, отправленные сервером. Это первое место, где браузер ищет кодировку, прежде чем что-либо еще.

person Rob    schedule 22.03.2010