Проблема с турецким символом JSP

У меня есть страница jsp, работающая под сервером jboss 4.2.2.

Структура страницы примерно такая:

include head (заголовок записывается на другой странице, например masterpage в aspx.)
(тело (где появляется проблема))
include foot (заголовок также записывается на другой странице.)

Главная страница содержит кодировку и метатеги:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Когда я пишу символы на странице, такие как şğĞİÇçÖ (турецкий), символы отображаются как "?" (вопросительный знак) что мне делать, чтобы избежать такого поведения?

Как я могу отображать текст так же, как он написан на странице jsp?


person Olgun Kaya    schedule 24.02.2011    source источник
comment
когда я пишу что-то на странице - я думаю, что просто написать это не вызывает проблем. Возможно, это связано с отправкой, сохранением в БД или чем-то еще. Уточните свой вопрос.   -  person Bozho    schedule 24.02.2011
comment
Я имею в виду жестко закодированные на странице, такие как ‹td›şğüçö‹/td›   -  person Olgun Kaya    schedule 24.02.2011


Ответы (3)


Я вижу две возможные причины:

  1. Ваш редактор не сохранил страницу в кодировке UTF-8. Проверьте настройки по умолчанию и/или параметр Сохранить как.
  2. @page отсутствует в некоторых JSP. Он должен присутствовать во всех файлах JSP, а также во включаемых файлах.

Независимо от конкретной проблемы, в верхней части JSP было достаточно:

<%@ page pageEncoding="UTF-8" %>

Остаток, который вы поместили, уже является (неявным) значением по умолчанию.

person BalusC    schedule 24.02.2011
comment
на самом деле есть только глобальная страница, скажем, head.jsp, и она включает эти настройки. как я могу проверить такие параметры в eclipse? - person Olgun Kaya; 25.02.2011
comment
Повторяю: он должен присутствовать во всех файлах JSP. Что касается Eclipse, проверьте Общие › Рабочая область › Кодировка текстового файла в настройках. - person BalusC; 25.02.2011

В дополнение к объявлению DOCTYPE обычно рекомендуется включать метатег в документ <head>, например:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

Помимо этого предложение BalusC о том, что все задействованные файлы должны быть действительно СОХРАНЕННЫМ с кодировкой UTF8 очень важно.

person Caleb    schedule 05.08.2011
comment
Этот метатег игнорируется, когда страница обслуживается через HTTP. Вместо этого кодировка будет получена из заголовка ответа HTTP. Кодировка страницы JSP в моем ответе делает именно это. OP должен только убедиться, что он установлен во всех JSP. См. также w3.org/TR/html4/charset.html# h-5.2.2 и balusc.blogspot.com/2009/05/ - person BalusC; 05.08.2011

Добавьте этот фрагмент в свой сервлет:

request.setCharacterEncoding("UTF-8");

response.setContentType("text/html; charset=utf-8");
person U O    schedule 06.04.2020
comment
хорошо, спасибо за ваше время, но эта проблема уже давно ушла, и даже jsp почти мертв :) - person Olgun Kaya; 07.04.2020