powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Что-то сервлет выводит кириллицу в виде ??????
7 сообщений из 7, страница 1 из 1
Что-то сервлет выводит кириллицу в виде ??????
    #35862910
smm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не совсем понимаю ...

Есть Web-приложение на Tomcat+Servlet+HTML

Принцип вывода ответа клиенту там такой: из сервлета, который вызвал пользователь приложения запускается специальный сервлет, который считывает указанный шаблон HTML страницы и перенаправляет его в браузер клиенту.
Вот странная штука: считывание и передача первого шаблона проходит нормально. А считывание следующего шаблона выводит у клиента кириллицу в виде ???? 8-О

В этом специальном шаблоне в самом начале метода SERVICE стоит

Код: plaintext
1.
2.
response.setContentType("text/html; charset=windows-1251")); 
PrintWriter out = response.getWriter();

Далее идет построчное считывание файла шаблона в строковую переменную и ее последующий вывод
Код: plaintext
1.
out.println(s);

В чем тут косяк?

PS:
Например есть шаблон1 и шаблон2.
Если сначала выводится шаблон1, то он пользователю передается нормально, а затем при передаче шаблон2 уже идут ??????
А если наоборот, сначала шаблон2, то он передается нормально, а следующий шаблон1 уже с ?????.

Оба шаблона HTML написаны в Win-1251

При отладке в Eclipse, отладчик показывает, что строковая переменная передающаяся на вывод клиенту нормально читабельна, т.е. кириллица там нормальна. (в настройках Eclipse стоит кодировка "Cp1251" для исходников)
...
Рейтинг: 0 / 0
Что-то сервлет выводит кириллицу в виде ??????
    #35868138
ik_55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне помогло при проблеме в сервлете с русскими буквами.

http://www.getinfo.ru/article296.html
...
Рейтинг: 0 / 0
Что-то сервлет выводит кириллицу в виде ??????
    #35868934
Spiritmonger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
out.flush(); Думаю полечит.
...
Рейтинг: 0 / 0
Что-то сервлет выводит кириллицу в виде ??????
    #35869074
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
smm
Код: plaintext
1.
response.setContentType("text/html; charset=windows-1251")); 

Далее идет построчное считывание файла шаблона в строковую переменную и ее последующий вывод
Код: plaintext
1.
out.println(s);
При отладке в Eclipse, отладчик показывает, что строковая переменная передающаяся на вывод клиенту нормально читабельна, т.е. кириллица там нормальна. (в настройках Eclipse стоит кодировка "Cp1251" для исходников)

Во-первых, сделайте нормальную кодировку (UTF-8) и в исходниках, и в приложении. Во-вторых, то что отладчик показывает вам нормальную строку, это не значит, что ее кодировка cp1251. В Java все строки хранятся в кодировке Unicode. В-третьих, когда вы считываете файл используется локаль из ОС. В случае Windows по умолчанию берется кодировка cp1251. Если ваш сервер будет работать под *nix, 99% там будет по умолчанию считаться UTF-8. Поэтому переведите (если это возможно) ваш файл в UTF-8 и при считывании файла явно укажите кодировки (последнее обязательно в любом случае).
...
Рейтинг: 0 / 0
Что-то сервлет выводит кириллицу в виде ??????
    #35870634
stellio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте фильтр добавить

public class UtfFilter extends HttpServlet implements Filter {

public void init(FilterConfig arg0) throws ServletException {
}

public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain)
throws IOException, ServletException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf8");

filterChain.doFilter(request, response);

}

}

и в web.xml :

<filter>
<filter-name>utf8filter</filter-name>
<filter-class>filters.UtfFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>utf8filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
...
Рейтинг: 0 / 0
Что-то сервлет выводит кириллицу в виде ??????
    #35893200
brainmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smm,


>> response.setContentType("text/html; charset=windows-1251"));


В догонку из собственного опыта было замечено, что некоторые engine не допускают наличие пробела между ';' и 'charset'

Поэтому юзанье такой методики
response.setCharacterEncoding("Cp1251");
response.setContentType("text/html");

более стабильно

Есссесно если соблюдены нюансы - по всасываемой кодировке :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Что-то сервлет выводит кириллицу в виде ??????
    #38711335
Deflorator1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
response.setContentType("text/html; charset=UTF-8");
Тоже работает. И меньше всего "букаф" писать:)
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Что-то сервлет выводит кириллицу в виде ??????
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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