Xpoint
   [напомнить пароль]

AJAX & JSP проблемы с кодировкой

Метки: [без меток]
2006-03-31 17:34:31 [обр] Сергей Ворончук(0/1)[досье]

Здравствуйте! Отправляю запрос на сервер через XMLHttpRequest.
Перед отправкой делаю URL кодирование -

var name=encodeURIComponent('ЛДЖ');

На принимающей jsp странице делаю следующее -

<?xml version="1.0" encoding="WINDOWS-1251" standalone="yes"?>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ page contentType="text/xml; charset=Windows-1251" %>
<%@page import="java.net.*"%>

<c:set var="test">
<%
request.setCharacterEncoding("Cp1251");
String caption = new String( request.getParameter("name").getBytes("ISO-8859-1"), "Cp1251" );
String nam = URLDecoder.decode(caption);
out.print(nam);
%>
</c:set>

<c:out value="${test}" escapeXml="false"/>

В результате получаю вместо букв знаки вопроса. Если этот же запрос отправить не через XMLHttpRequest, а просто через форму с методом GET, то все работает правильно. Проверил - буквы 'ЛДЖ', отправленные через форму самим браузером кодируются как '%CB%C4%C6' а используемая мной encodeURIComponent('ЛДЖ') возвращает
%D0%98%D0%94%D0%96 Несоответствие очевидно.

Вопрос: Как правильно принять/передать русские символы JSP страницы используя XMLHttpRequest

спустя 1 час 2 минуты [обр] GRAy(14/259)[досье]
Строка в javascript - уже unicode насколько мне известно.
спустя 9 минут [обр] Давид Мзареулян(7/1003)[досье]

Долго фтыкал в строку:

String caption = new String( request.getParameter("name").getBytes("ISO-8859-1"), "Cp1251" );

Это сильно. Удивлён, что ЭТО вообще работает.

По делу — encodeURIComponent выдаёт строки в UTF-8.

спустя 5 минут [обр] Сергей Ворончук(0/1)[досье]

GRAy[досье] Спасибо, помогло. Исправил, как показано ниже и заработало.

<%
request.setCharacterEncoding("UTF-8");
String caption = request.getParameter("name");
String nam = URLDecoder.decode(caption);
out.print(nam);
%>

спустя 3 минуты [обр] Сергей Ворончук(0/1)[досье]
Давид Мзареулян[досье]
Это не сам придумал - нашел , как один из вариантов, в случае отправки формы оно таки работает.
спустя 4 дня [обр] Алексей[досье]

А я вот не могу передать через XMLHttpRequest запрос в UTF-8.
Передаю: url += "?name=" + escape(name);
В принимающей JSP пишу:
request.setCharacterEncoding("UTF-8");
log(request.getParameter(name));

Сервер Tomcat 5.5.16 JDK 1.5 URIEncoding="UTF-8" На сервере прописана в обохи Connector'ах и мне в лог выдается null, если name содержит русские буквы, хотя если я в броузере вызываю данную страницу с русскими параметрами, то все проходит нормально

спустя 28 минут [обр] Давид Мзареулян(7/1003)[досье]
Алексей[досье] Забудьте про escape. Используйте encodeURIComponent.
Powered by POEM™ Engine Copyright © 2002-2005