Разъяснение кодировки UTF-8 и ISO-8859-1 при использовании со страницами JSP и Tomcat
У меня, должно быть, есть проблемы, соединяющие два и два вместе, когда дело доходит до кодирования, но есть довольно много вопросов о стековом потоке, касающихся кодирования, поэтому я не должен быть единственным! В настоящее время у меня есть простая JSP-страница, которая имеет форму действия Struts, содержащую однопользовательский текстовый ввод со значением по умолчанию Pmesies Olivés.
<%@page contentType="text/html;charset=UTF-8"%>
<form method="get" action="login.jsp">
<tr><td>Full Name:</td><td><input type="text" name="fullName" value="Pà mies Olivés" size="35"></td></tr>
<tr><td colspan="2"><br><input type="submit" name="submit" value="submit"></td></tr>
Если пользователь нажимает "Отправить" с этим значением по умолчанию, у меня есть скриптлет, который выводит введенное пользователем значение на страницу, чтобы я мог его увидеть. Я получаю ожидаемые Pmesies Olivés, когда Tomcat и кодировка страницы установлены в UTF-8. Тем не менее, если я пытаюсь использовать кодировку ISO-8859-1 в Tomcat, я получаю вывод Pies Mies Olivés или, если я устанавливаю для Tomcat и кодировку страницы значение ISO-8859-1, значение становится равным Pies Mies Olivà ©. s. Что вызвало бы это несоответствие с кодировкой ISO-8859-1?
1 ответ
Кодирование данных формы POST обычно контролируется accept-charset
атрибут на form
элемент.
Определение формы POST должно выглядеть так:
<form method="get" action="login.jsp" accept-charset="iso-8859-1" >
Для запросов GET HTML 4 рекомендует использовать кодировку UTF-8 для строки запроса, которую в качестве метода вы будете использовать как "GET".
accept-charset="iso-8859-1"
может заставить браузер кодировать строку запроса в iso-8859-1, но я не думаю, что это будет очень надежно.
Вместо этого, попробуйте использовать POST, если это возможно.
Я ценю, что ваш вопрос может быть академическим, но я бы порекомендовал вам использовать UTF-8 для форм, чтобы вы не ограничивали их <255 уникальными символами.