У меня есть приложение на основе tomcat, которому нужно отправить форму, способную обрабатывать символы utf-8. При отправке через ajax данные правильно возвращаются из getParameter () в utf-8. При отправке через публикацию формы данные возвращаются из getParameter () в iso-8859-1.
Я использовал скрипач и определил, что единственная разница в запросах заключается в том, что charset = utf-8 добавляется в конец Content-Type в вызове ajax (как и ожидалось, поскольку я отправляю тип содержимого явно).
ContentType из ajax: "application / x-www-form-urlencoded; charset = utf-8"
ContentType из формы: "application / x-www-form-urlencoded"
У меня есть следующие настройки:
ajax post (выводит символы правильно):
$.ajax( {
type : "POST",
url : "blah",
async : false,
contentType: "application/x-www-form-urlencoded; charset=utf-8",
data : data,
success : function(data) {
}
});
form post (выводит символы в iso)
объявление xml:
Doctype:
метатег:
jvm parameters:
-Dfile.encoding=UTF-8
Я также пробовал использовать request.setCharacterEncoding ("UTF-8"); , но похоже, что tomcat просто игнорирует его. Я не использую клапан RequestDumper.
Из того, что я читал, кодирование данных POST в основном зависит от кодировки страницы, на которой находится форма. Насколько я могу судить, моя страница правильно закодирована в utf-8.
Пример JSP с этой страницы работает правильно. Он просто использует setCharacterEncoding ("UTF-8"); и повторяет публикуемые вами данные. http://wiki.apache.org/tomcat/FAQ/CharacterEncoding
Итак, чтобы подвести итог, почтовый запрос не отправляет кодировку как utf-8, несмотря на то, что страница находится в utf-8, параметры формы, указывающие utf-8, объявление xml или что-то еще. Я потратил на это большую часть трех дней, и у меня заканчиваются идеи. Кто-нибудь может мне помочь?