Составная форма в JSP, проблемы кодирования в Glassfish
Я получаю недопустимый символ из моего jsp/servlet, используя Eclipse и Glassfish.
Если я ввожу "Пеш", я получаю "Пеш". Итак, это проблема кодирования. Я попробовал несколько мыслей и ничего не работает.
- Я пытался добавить фильтр ( проблемы кодирования в JSP)
- Я пытался добавить свойства jsp в web.xml ( Невозможно изменить кодировку с ISO-8859-1 на UTF-8 в glassfish 3.1)
- Я попытался изменить кодировку символов в коде Java с помощью request.setCharacterEncoding("UTF-8");
- Я пытался добавить аргументы VM ( Невозможно изменить кодировку с ISO-8859-1 на UTF-8 в glassfish 3.1), но не могу из-за этого ( Eclipse - в Run Runs не найден сервер)
- Я добавил это " accept="UTF-8" accept-charset="UTF-8" " в мой
- я добавил
<parameter-encoding default-charset="UTF-8"/>
в sun-web.xml и glassfish-web.xml
Я все еще получаю моджибаке.
Вот мой код сервлета:
String name = (String) request.getParameter("templateName");
Вот мой контент JSP:
<%@ page pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>....</title>
</head>
<body>
<form action="<c:url value="/form/edit" />" method="post" enctype="multipart/form-data">
<input type="text" id="templateName" name="templateName" />
<br />
<input type="submit" value="Valider" class="button button_blue margin_button_form"/>
</form>
</body>
</html>
Любое другое предложение?
4 ответа
В конце, похоже, ошибка Glassfish: https://java.net/jira/browse/GLASSFISH-18516
Решено ужасно с этим: new String (s.getBytes ("iso-8859-1"), "UTF-8");
( /questions/13743971/tekst-utf-8-iskazhaetsya-kogda-forma-publikuetsya-kak-multipartform-data/13743980#13743980)
Я просто столкнулся с той же проблемой. Я думаю, вы можете временно установить это в glassfish-web.xml:
<parameter-encoding default-charset="UTF-8"></parameter-encoding>
Это работает для меня.
http://www.devsniper.com/glassfish-tips-default-encoding/
Кроме того, тестируйте формы POST и GET, так как они обрабатываются по-разному. Атрибут accept также полезен для браузера. (Например, не получает HTML-сущности.)
Попробуйте добавить это:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
И в вашем сервлете добавьте это:
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");