Отправка POST с помощью XMLHTTP
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Отправка POST с помощью XMLHTTP Expand / Collapse
</
Автор
Сообщение
10.06.2006 15:35


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
Доброе время суток!

Подскажите как правильно кодировать данные для отправки, чтобы сервер принемал текст в правильной кодировке.
Здесь я привожу функцию отправки:
<SCRIPT LANGUAGE=javascript>
function XMLHTTPButton_onclick(URL) {
     var DataToSend = "text=здесь русский текст";

     var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
     xmlhttp.Open("POST", URL, false);
     xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
     xmlhttp.send(DataToSend);
}
</SCRIPT>

После отправки, на сервер приходит какая-то абракадабра. Если отправить текст на английском, то все нормально.

Сообщ. #898497
11.06.2006 11:58
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 11.06.2006 14:53
Сообщ.: 1, Visits: 4
Данные нужно посылать в UTF-8. Английский посылается нормально, потому, что коды в cp1251 и UTF-8 символов латинницы совпадают.
Сообщ. #898507
11.06.2006 17:34


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
Пробовал кодировать в ту кодировку.. Не вышло.. Может не правильно кодирую? Как надо, напиши, если не трудно?
Сообщ. #898510
12.06.2006 10:47
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Попробуй использовать фукнцию encodeURI
xmlhttp.send(encodeURI(DataToSend));
Сообщ. #898518
17.06.2006 0:54


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 12.06.2008 11:23
Сообщ.: 96, Visits: 535
Пробовал и такую функцию.. Не помогает.
Сообщ. #899016
17.06.2006 2:13
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
xmlhttp.send(encodeURIComponent(DataToSend));
Сообщ. #899017
17.06.2006 9:50
Supreme Being

Supreme Being

модератор
Last Login: 04.05.2008 13:32
Сообщ.: 7 240, Visits: 65 445
Можешь составить таблицу перекодировки русских букв в соотвествующие им коды %XX. Примерно также как было в теме Аналог escape() в PHP.
Сообщ. #899021
21.06.2006 17:45
Junior Member

Junior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior MemberJunior Member

участник
Last Login: 23.06.2006 10:46
Сообщ.: 24, Visits: 227
Могу подсказать только что делать на сервере

если версия пхп 4.6 и выше, то посмотри мануал LXXXV. Multibyte String Functions
Description
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )


mb_convert_encoding() converts character encoding of string str from from_encoding to to_encoding.

str : String to be converted.

from_encoding is specified by character code name before conversion. it can be array or string - comma separated enumerated list. If it is not specified, the internal encoding will be used.

****************************************
но не всем дан пхп v4.6 и выше...

я как то использовала такие функции

function convert($str,$from, $to){
$win = array( 'А', 'а', 'Б', 'б', 'В', 'в', 'Г', 'г', 'Д', 'д', 'Е', 'е', 'Ё', 'ё', 'Ж', 'ж', 'З', 'з', 'И', 'и', 'Й', 'й', 'К', 'к', 'Л', 'л', 'М', 'м', 'Н', 'н', 'О', 'о', 'П', 'п', 'Р', 'р', 'С', 'с', 'Т', 'т', 'У', 'у', 'Ф', 'ф', 'Х', 'х', 'Ц', 'ц', 'Ч', 'ч', 'Ш', 'ш', 'Щ', 'щ', 'Ъ', 'ъ', 'Ы', 'ы', 'Ь', 'ь', 'Э', 'э', 'Ю', 'ю', 'Я', 'я' );
$utf8 = array( 'Рђ', 'Р°', 'Р‘', 'Р±', 'Р’', 'РІ', 'Р“', 'Рі', 'Р”', 'Рґ', 'Р•', 'Рµ', 'РЃ', 'С‘', 'Р–', 'Р¶', 'Р—', 'Р·', 'Р�', 'Рё', 'Р™', 'Р№', 'Рљ', 'Рє', 'Р›', 'Р»', 'Рњ', 'Рј', 'Рќ', 'РЅ', 'Рћ', 'Рѕ', 'Рџ', 'Рї', "Р ", "СЂ", 'РЎ', 'СЃ', 'Рў', 'С‚', 'РЈ', 'Сѓ', 'Р¤', 'С„', 'РҐ', 'С…', 'Р¦', 'С†', 'Р§', 'С‡', 'РЁ', 'С€', 'Р©', 'С‰', 'РЄ', 'СЉ', 'Р«', 'С‹', 'Р¬', 'СЊ', 'Р', 'СЌ', 'Р®', 'СЋ', 'РЇ', 'СЏ' );
return str_replace($$from, $$to, $str);
}

function win_to_utf8($str){
$replace = array( 'А'=>'Рђ', 'а'=>'Р°', 'Б'=>'Р‘', 'б'=>'Р±', 'В'=>'Р’', 'в'=>'РІ', 'Г'=>'Р“', 'г'=>'Рі', 'Д'=>'Р”', 'д'=>'Рґ', 'Е'=>'Р•', 'е'=>'Рµ', 'Ё'=>'РЃ', 'ё'=>'С‘', 'Ж'=>'Р–', 'ж'=>'Р¶', 'З'=>'Р—', 'з'=>'Р·', 'И'=>'Р�', 'и'=>'Рё', 'Й'=>'Р™', 'й'=>'Р№', 'К'=>'Рљ', 'к'=>'Рє', 'Л'=>'Р›', 'л'=>'Р»', 'М'=>'Рњ', 'м'=>'Рј', 'Н'=>'Рќ', 'н'=>'РЅ', 'О'=>'Рћ', 'о'=>'Рѕ', 'П'=>'Рџ', 'п'=>'Рї', 'Р'=>'Р ', 'р'=>'СЂ', 'С'=>'РЎ', 'с'=>'СЃ', 'Т'=>'Рў', 'т'=>'С‚', 'У'=>'РЈ', 'у'=>'Сѓ', 'Ф'=>'Р¤', 'ф'=>'С„', 'Х'=>'РҐ', 'х'=>'С…', 'Ц'=>'Р¦', 'ц'=>'С†', 'Ч'=>'Р§', 'ч'=>'С‡', 'Ш'=>'РЁ', 'ш'=>'С€', 'Щ'=>'Р©', 'щ'=>'С‰', 'Ъ'=>'РЄ', 'ъ'=>'СЉ', 'Ы'=>'Р«', 'ы'=>'С‹', 'Ь'=>'Р¬', 'ь'=>'СЊ', 'Э'=>'Р', 'э'=>'СЌ', 'Ю'=>'Р®', 'ю'=>'СЋ', 'Я'=>'РЇ', 'я'=>'СЏ' );

for( $i=0; $i'".$str."'='".$result."'"; return $result; }

в твоем случае во второй функции массив надо перевернуть (ключи и значения поменять местами)

но и с этими функциями не всегда гладко проходило.


Сообщ. #899330
23.06.2006 9:37