Почему POST не честь кодировки, а запрос AJAX делает? tomcat 6

У меня есть приложение на основе 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 или что-то еще. Я потратил на это большую часть трех дней, и у меня заканчиваются идеи. Кто-нибудь может мне помочь?

24
задан BalusC 9 December 2010 в 18:47
поделиться