|  | 
| 
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&tid=1458885]: | 0ms | 
| get settings: | 11ms | 
| get forum list: | 14ms | 
| check forum access: | 4ms | 
| check topic access: | 4ms | 
| track hit: | 26ms | 
| get topic data: | 13ms | 
| get forum data: | 2ms | 
| get page messages: | 43ms | 
| get tp. blocked users: | 2ms | 
| others: | 229ms | 
| total: | 348ms | 

| 0 / 0 | 
