powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлет - кодировка страницы
25 сообщений из 30, страница 1 из 2
Сервлет - кодировка страницы
    #39386933
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня господа !

Сделал сервлет - кодировка страницы UTF-8
строку в кодировке win1251 ЯВНО перевожу в UTF-8
Вывожу на страницу - крокозября
Поясните как исправить
Сервер находиться на Win7

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		doExecute(request, response);
	}

	protected void doExecute(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		String execute="false";

                response.setContentType("text/html");
		response.setCharacterEncoding("utf-8");
                PrintWriter out = response.getWriter();

                String win1251 = "Добрый день";
		String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");
	        out.println(win1251);
		out.println(utf8);
        .......................
        }		
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386944
Alexander A. Sak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_Xстроку в кодировке win1251 ЯВНО перевожу в UTF-8


Не надо этого делать, и все должно получиться.
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386949
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X
Код: java
1.
		String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");


Мне пора счетчик завести, наверное. Это уже, вероятно, десятый раз когда я пишу на этом форуме. Этот код целиком и полностью ошибочен. Если вы его пишете, значит у вас что-то где-то в другом месте сломано. Конкретно здесь проблема в том что в переменной win1251 вообще нет ничего относящегося к кодировке cp1251. Если у вас там что-то не то в переменной это свидетельствует о том что .java файл вы сохранили в одной кодировку, а компилятору сказали читать его в другой. И эта ошибка, которую надо исправлять.
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386953
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Краткая последовательность действий
HOME_X
Код: java
1.
		response.setCharacterEncoding("utf-8");


Сообщаем браузеру, что ответ будет в utf-8
HOME_X
Код: java
1.
                String win1251 = "Добрый день";


Создаем строку во внутренней кодировке Java (не 1251)
HOME_X
Код: java
1.
		String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");


Преобразовываем строку в последовательность байт характерных для кодировки utf-8.
Затем преобразовываем эту последовательность байт предполагая что там кодировка 1251 во внутреннее представление Java.
HOME_X
Код: java
1.
	        out.println(win1251);


Печатаем исходную строку (с преобразованием в кодировку указанную выше)
HOME_X
Код: java
1.
		out.println(utf8);


Печатаем то, что получилось (с преобразованием в кодировку указанную выше)

Зачем только это?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386984
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHOME_X
Код: java
1.
		String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");


Мне пора счетчик завести, наверное. Это уже, вероятно, десятый раз когда я пишу на этом форуме. Этот код целиком и полностью ошибочен. Если вы его пишете, значит у вас что-то где-то в другом месте сломано. Конкретно здесь проблема в том что в переменной win1251 вообще нет ничего относящегося к кодировке cp1251. Если у вас там что-то не то в переменной это свидетельствует о том что .java файл вы сохранили в одной кодировку, а компилятору сказали читать его в другой. И эта ошибка, которую надо исправлять.

Согласен - приймите мои извинения = "десятый раз"
"...java файл вы сохранили в одной кодировку, а компилятору сказали читать его в другой.."
Где именно это НУЖНО менять ?

Суть процесса чуть другая
есть ресурс
- который храниться в win1251
- который считывается классом
- из этого ресурса формируется данные для HTML
под Win веб сервером все в порядке
под Linux - крокозябрит

Зачем я делал перевод ? чтобы привести кодировкку установленной страницы и выводимой строки

Подскажите как правильно реализовать запуск под разными операционками
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386988
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XГде именно это НУЖНО менять ?тарантуле надо сказать об этом -- http://stackoverflow.com/questions/1726174/how-to-compile-a-java-source-file-which-is-encoded-as-utf-8
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39386992
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HOME_XПодскажите как правильно реализовать запуск под разными операционками
при правильной организации кодировок, такой вопрос не возникает, значит что-то не так
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387041
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Зачем только это?


response.setCharacterEncoding("utf-8");
Установка кодировки на странице - согласен

String win1251 = "Добрый день";
Иниц - ция строку во внутр. кодировке - согласен (где в Eclipse найти внутренн. кодировку)

//String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");
согласен не нужно - ошибка

String utf8 = new String(win1251.getBytes("UTF-8"));
перевели в UTF-8

out.println(win1251);
out.println(utf8);
Вывод для контроля над процессом

Проблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы

На текущий момент на Win и под Linux он разный
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387052
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XString utf8 = new String(win1251.getBytes("UTF-8"));
перевели в UTF-8

точно такая же ошибка. Просто вместо явного cp1251 вы используете текущую кодировку по умолчанию.

HOME_XПроблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы
На текущий момент на Win и под Linux он разный
Проблема в том что не понятно связан ли ваш пример с вашей реальной проблемой. Вы действительно пишете русский текст прям в строковых литералах? Вы действительно не знаете в какой кодировке хранятся ваши Java файлы? Вы действительно не знаете какая кодировка используется при компиляции?
Вы намеренно игнорируете то что я пишу просто потому что не понимаете?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387063
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X

т.е. ты делаешь сайт не такой как наш любимый sql_ru?
))
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387068
am_sasa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HOME_XСуть процесса чуть другая
есть ресурс
- который храниться в win1251
- который считывается классом
- из этого ресурса формируется данные для HTML
под Win веб сервером все в порядке
под Linux - крокозябрит

вангую - класс читает из ресурса без указания кодировки - тута порылась собака
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387077
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
am_sasa - который храниться в win1251
- который считывается классом


вангую - класс читает из ресурса без указания кодировки - тута порылась собака[/quot]
Блин. Точно. Мои извинения HOME_X. Не заметил слона. Так и где этот самый класс, который считывает?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387080
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz

Ваш вопросы - по пунктам


- Вы действительно пишете русский текст прям в строковых литералах?
Да,пример - <td> Особовий рахунок </td>


- Вы действительно не знаете в какой кодировке хранятся ваши Java файлы?
Известно - текстовый ресурс в кодировке windows-1251


- Вы действительно не знаете какая кодировка используется при компиляции?
System.out.println(Charset.defaultCharset().name());
windows-1251


Верно ли Вас понял ?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387081
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вообще, в IDE тоже выставляется кодировка в свойствах проекта и JSP файлов.
Т.е. действующие лица:
- файлы - IDE - AppServer - метаТеги для обозревателя.
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387084
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X Известно - текстовый ресурс в кодировке windows-1251

IDE какая и что в заголовке страницы?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387085
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X- Вы действительно пишете русский текст прям в строковых литералах?
Да,пример - <td> Особовий рахунок </td>


Прямо внутри Java класса? Или отдельным файлом?

HOME_X- Вы действительно не знаете в какой кодировке хранятся ваши Java файлы?
Известно - текстовый ресурс в кодировке windows-1251


"Текстовый ресурс" это что именно?

HOME_X System.out.println(Charset.defaultCharset().name());
windows-1251

Верно ли Вас понял ?
Отчасти. Как именно собирается проект?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387086
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X текстовый ресурс в кодировке windows-1251
файл JSP сделай в кодировке UTF
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387087
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_X,

Один момент господа ...

Меня терзает следующее - (поясните мне где ошибаюсь)

Вот код
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
response.setCharacterEncoding("utf-8");
Установка кодировки на странице сервлета - согласен 

System.out.println(Charset.defaultCharset().name());  --windows-1251

String win1251 = "Добрый день";
Иниц - ция строку во внутр. кодировке - согласен (при компялциии надеюсь будет та же)

String utf8 = new String(win1251.getBytes("UTF-8"));
перевели в UTF-8

out.println(win1251);
out.println(utf8);
Вывод для контроля над процессом



И получил крокозябры на месте UTF-8 - почему ведь страница установлена и строка переведена верно
(скрин приложу по требованию)


Проблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы

На текущий момент на Win и под Linux он разный
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387091
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XИ получил крокозябры на месте UTF-8 - почему ведь страница установлена и строка переведена верно
(скрин приложу по требованию)

Мы не можем сказать что и как потому что таких входных данных как кодировка файлов и кодировка компилятора или значение переменной в рантейме - у нас их нет. Проблема лежит за пределами приведенного кода?


HOME_XПроблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы
На текущий момент на Win и под Linux он разный
Проблема в том что ваш пример не отражает реальной ситуации. В примере у вас проблема в компиляции. В реальности у вас проблема в чтении ресурса во время работы на Linux, так как текущая кодировка не совпадает с кодировкой файла.
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387092
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123HOME_X Известно - текстовый ресурс в кодировке windows-1251

IDE какая и что в заголовке страницы?

IDE = Tomcat

Заголовок страницы =
Более ничего
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387094
HOME_X
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczHOME_XИ получил крокозябры на месте UTF-8 - почему ведь страница установлена и строка переведена верно
(скрин приложу по требованию)

Мы не можем сказать что и как потому что таких входных данных как кодировка файлов и кодировка компилятора или значение переменной в рантейме - у нас их нет. Проблема лежит за пределами приведенного кода?


HOME_XПроблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы
На текущий момент на Win и под Linux он разный
Проблема в том что ваш пример не отражает реальной ситуации. В примере у вас проблема в компиляции. В реальности у вас проблема в чтении ресурса во время работы на Linux, так как текущая кодировка не совпадает с кодировкой файла.

Необходимо дать ЖЕСТКУЮ привязку в момент чтения ресурса (тестовый файл)
Пробую ...

Спасибо за уделенное время и терпение.
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387095
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_XIDE = Tomcat
Это не IDE разработки)).
Предложение (либо делать как на sql_ru):
- файлы в кодировке UTF
- свойства проекта в UTF
https://i.stack.imgur.com/ukrYs.png
- мета заголовок для браузера:
Код: java
1.
<!DOCTYPE html><html><head><meta content="text/html; charset=UTF-8"


а потом всё остальное.
Удачи!
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387098
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39387124
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HOME_Xresponse.setCharacterEncoding("utf-8");
Установка кодировки на странице - согласен
Насамом деле, я упустил, что здесь указание сервлету, в какой кодировке надо печатаь в его выходной поток. Собственно это половина того, что необходимо

HOME_XString win1251 = "Добрый день";
Иниц - ция строку во внутр. кодировке - согласен (где в Eclipse найти внутренн. кодировку)
Если мы говорим про исходный текст программы. То на файле правая кнопка и там сфойствах найдете. Ну или можно целиком на папку - тогда eclipse использует наследование от контейнера.
Если же читаете из файла или потока, то при чтении и указывать в какой кодировке ресурс.

HOME_X//String utf8 = new String(win1251.getBytes("UTF-8"),"windows-1251");
согласен не нужно - ошибка

String utf8 = new String(win1251.getBytes("UTF-8"));
перевели в UTF-8
Не надо - см первый коментарий все что надо уже сделано.

HOME_XПроблема в следующем
- мне нужно под WIN и под Linux получить идентичный результат при визуализации страницы

На текущий момент на Win и под Linux он разный
Так видать сама страница у тебя в разных кодировках показывается. Может для нее не задана кодовая страница вообще?
...
Рейтинг: 0 / 0
Сервлет - кодировка страницы
    #39499037
А. С.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, подниму данную тему. Проблема та же, нужно перекодировать строку из UTF-8 в Win-1251.
Указанный выше текст не помогает, получаю исключение.
Unhandled exception: java.io.UnsupportedEncodingException
вот часть кода:
String urlSend = " https://secure.blablabla.ru/rcapi/?action=personal_data&surname=Пушкин";
String newUrlSend = new String( urlSend.getBytes("UTF-8") , "windows-1251");

При этом часть urlSend.getBytes("UTF-8") подчеркивает красным и в подсказке пишет исключение.
Делаю в Android Studio.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Сервлет - кодировка страницы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]