|
XMLHTTP отправляет данные из JavaScript в UTF-8
|
|||
---|---|---|---|
#18+
Добрый день. Есть надобность отправлять русский текст используя XMLHTTP. Сделал простенький пример, помогите пожалуста разобраться. Убил на это уже несколько часов, а решения все нне приходит. Итак. I . есть файл simple.html, который лежит в руте и запускается так: http://localhost:88/simple.html. Вот его содержание: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <script> function Send() { var value = document.getElementById("name").value; if (value != "") { var result = SendRequest(value); //см. картинку и сноску (1) на ней document.getElementById("jsResult").innerText = value; //см. картинку и сноску (2) на ней document.getElementById("xmlHttpResult").innerText = result; } } function SendRequest(value) { var data = "name=" + value; var http = new ActiveXObject("Microsoft.XMLHTTP"); http.open("POST", "/cgi-bin/simple.cgi", false); http.setRequestHeader("Content-Type","text/html; charset=windows-1251"); http.send(data); return http.responseText; } </script> </head> <body> Введите строку: <input type="text" id="name"><input type="button" value="Отправить" onClick="javascript:Send();"><hr> 1. Результат JavaScript: <strong><span id="jsResult"></span></strong><br> 2. Результат XMLHTTP: <strong><span id="xmlHttpResult"></span></strong> </body> </html> II . В папке cgi-bin лежит simple.cgi: #!/usr/bin/perl use CGI qw/:standard/; $query = new CGI; print $query->header(-expires=>'now', -Content_Type=>'text/html; charset=windows-1251'); $name = $query->param("name"); print $name; Проблема : Когда я жму кнопку отправить, то см. рисунок (1), т.е. jsResult заполняется правильными данными. (2), т.е. xmlHttpResult заполняется криво. Все это видно на рисунке. HttpWatcher показывает, что кодировки запроса и ответа windows-1251 (выделено). А вот закладка с информацией какие же данные были отправлены (PostData - на картинке изображена ввеху) показывает, что данные уходят в UTF-8. Разбирать ушедшее в simple.cgi желания нет и знаний нет. Вопрос : почему при выставленных во всех возможных местах кодировках данные уходят в UTF-8? Как сделать чтобы данные уходили в Win1251 ? зы: Судя по результатам поиска тема избитая, то у кого-то файл не в тй кодировке риходит, то часть букв вопросами. Все решения которые я видел сводились к тому, чтоб попробовать везде выставить одинаковую кодировку, например, windows-1251. Мне это отчего-то не помогло (см. рисунок) Спасибо. http://antipod.russia.webmatrixhosting.net ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2007, 20:57 |
|
XMLHTTP отправляет данные из JavaScript в UTF-8
|
|||
---|---|---|---|
#18+
Я всё для веб кодирую В UTF-8, таких проблем не возникает JS1.5 reference Похоже JS для внутреннего представления использует utf-8 надо перекодировать. На стороне сервера проще, в JS надо смотреть escape() encodeURI() и методы String объекта ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2007, 05:20 |
|
XMLHTTP отправляет данные из JavaScript в UTF-8
|
|||
---|---|---|---|
#18+
Я только что маялся с этой проблемой. url, к которому обращался xmlHttpRequest написан на php. До тех пор, пока в нём я не написал явное преобразование в UTF-8: Код: plaintext
Я понял так, что javascript ожидает получения UTF-8. Почему - не знаю. И как ему указать, что придёт другая кодировка, тоже не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.01.2007, 12:11 |
|
|
start [/forum/topic.php?fid=22&msg=34283491&tid=1458885]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
35ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 286ms |
total: | 411ms |
0 / 0 |