Проблемы с кодировкой в ​​Linux, а не в Windows

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

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

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

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

4 ответа

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

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

Для правильной работы кодировки в Nixes и Nuxes необходимо сыграть вместе:

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

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

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

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

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

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