Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   POST - на сервер приходят крикозяблы (http://www.flasher.ru/forum/showthread.php?t=113764)

Alex_B 08.07.2008 14:56

POST - на сервер приходят крикозяблы
 
Вот так ким образом отправляю HTTP POST запрос на сервер:

Код:

var params:URLVariables = new URLVariables();
params.alt = "русские буквы";

var request:URLRequest = new URLRequest("my.aspx");
request.method = URLRequestMethod.POST;
request.data = params;

На сервер приходят крикозяблы, по типу
Тестовое описание


Что делать, где ошибка?
(В SOAP сервисе никаих проблем не было).

Alex_B 08.07.2008 15:34

Вот такое решение

Код:

var header:URLRequestHeader = new URLRequestHeader("charset", "utf-8");
request.requestHeaders.push(header);


Alex_B 08.07.2008 15:35

Вот такое решение

Код:

var header:URLRequestHeader = new URLRequestHeader("charset", "utf-8");
request.requestHeaders.push(header);


Alex_B 08.07.2008 17:00

Ошибся - не работает так

wvxvw 15.07.2008 16:06

С АСП не могу посоветовать... народ на работу подтянется - спрошу =)
Но, очень похожие проблемы есть с ПХП, думаю, что логика и решение должны быть где-то похожа...
Вобщем, "крикозябры", которые ты видишь, это УТФ-8 текст, только прочитаный в другую кодировку, скорее всего ИСО англоязычный. Объясню в общих чертах разницу:
ИСО, как и другие чисто АСКИИ кодировки используют 1 байт для записи символа (соответственно, возможно всего 256 разных символов). УТФ-8, в отличие от остальных юникодных кодировок записывает символы соответствующие первым 256 АСКИИ символам используя 1 байт (т.е. ИСО и УТФ-8 латиница + цифры + знаки препинания + командные символы будут выглядеть одинаково), а вот для записи иноязычных символов, например, кириллицы, УТФ-8 использует 2 байта для символа. Т.е. к примеру, кирилличная прописная "А" == 0х04 + 0х10 (в УТФ-8) а в АСКИИ эти 2 байта сформируют 2 символа, оба нечитаемые.
Соответственно, нужно порыться в документации и найти что-то, что может либо прочитать содержимое ПОСТ в нужной кодировке, либо заставить систему работать с юникодами (т.е. все файлы надо будет пересохранить как УТФ-8, СКуэЛ настроить так, чтобы тоже понимал УТФ-8 и т.д.), либо во Флеше перед отсылкой конвертировать текст в какую-нибудь кирилличную кодировку, котороя будет воспринята АСП, больше всего шансов, что он использует windows-1252.

О, а вот и народ с обеда подтянулся =) Вот, что говорят :
Код:

System.Text.ASCIIEncoding.UTF8.GetString("some string");

Alex_B 22.07.2008 12:27

wvxvw, спасибо.

Сейчас на сервере вот такое использую:

Код:

private void _AjaxDecodeStr(ref string ss)
{
    byte[] b1 = Encoding.Default.GetBytes(ss);

    ss = "";
    foreach (byte b in b1)
    {
        ss += "%" + b.ToString("X2");
    }

    ss = HttpUtility.UrlDecode(ss);
}



Часовой пояс GMT +4, время: 19:54.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.