Проблема кодировки символов Jetty - PullRequest
2 голосов
/ 18 ноября 2010

У меня проблема с кодировкой символов причала. Когда сервер Jetty установлен на Mac (OSX), он работает нормально. Но когда он установлен в Ubuntu (10.10), кодировка символов неправильная.

Слово на странице (не URL), имеющее проблему: «New York Times® Bestsellers

На странице, обслуживаемой сервером в Linux

, отображается как «Нью-Йорк Таймс».

и отображается как «Бестселлеры New York Times®» на странице, обслуживаемой сервером на Mac (это правильно)

Версия сервера Jetty: hightide-7.0.2.v20100331

Кодировка символов обслуживаемого файла: UTF-8

Не могли бы вы сообщить мне, нужно ли изменить какие-либо настройки для решения этой проблемы?

Заранее спасибо!

Ответы [ 4 ]

5 голосов
/ 25 мая 2013

У меня была похожая проблема с Jetty 8, и я решил ее, добавив эту строку в bin / jetty.sh:

JAVA_OPTIONS+=("-Dfile.encoding=UTF-8")
3 голосов
/ 01 июля 2014

У меня тоже была такая проблема, и я хочу поблагодарить aditsu за его ответ.

Я использую рестлет поверх сервера Jetty в Ubuntu 12.04 (и 14.04).Приложение рестлета находится за сервером Apache, который функционирует как proxyPass.

Все файлы имеют формат UTF-8.Все HTTP-ответы имеют Content-Type text / html;кодировка = UTF-8.Все файлы содержат

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

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

В то время моими кандидатами были: Apache, порядок загрузки службы Ubuntu, среда перезапуска, файлфактически используемая кодировка, заголовки HTTP, метатеги HTML.Но все было так, как и должно было быть.

Итак, в конце концов, это была Пристани, которую я рассмотрел только сейчас, после повторного рассмотрения этой проблемы.

Я до сих пор не понимаюпочему запуск во время загрузки делает кодировку символов неправильной, а после ручного перезапуска службы - правильной.Добавление дополнительного аргумента JAVA '-Dfile.encoding = UTF-8' заставило все это исчезнуть.Еще раз спасибо aditsu за то, что поделились своим решением !!

Cheers

Редактировать: Установка переменной среды LANG в скрипте запуска также решает проблему.Т.е.

export LANG = en_US.UTF-8

На самом деле, это разница между запуском сервера Jetty во время загрузки (LANG не определен из коробки) и запуском его из оболочки.Итак, два решения для одной и той же проблемы.

3 голосов
/ 25 ноября 2010

Понял; для меня отсутствовал заголовок кодировки JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
0 голосов
/ 09 апреля 2017

Вы, вероятно, читаете напрямую необработанную кодировку http, и вам необходимо декодировать ее в utf8 с помощью декодера.

используйте java.net.URLDecoder line = URLDecoder.decode (line, "UTF-8");

Для кодирования текста в html charset используйте URLEncoder, например, когда Java String напрямую отправляет сообщение: строка = URLEncoder.encode (строка, "UTF-8");

...