Вход

Просмотр полной версии : ПОЖАЛУЙСТА ПОМОГИТЕ с кодировкой почты, отправляемой из Flash


roman58
26.05.2003, 10:17
:eek: Я уже голову сломал с этой прооблемой. Отпраляю почту в PHP скрипт, используя методы getURL и loadVars.send или sendAndLoad. Данные беру из текстовых полей.
Все нормально работает, но только если содержимое полей (кому, от кого, сообщение, тема) вводится на английском языке. Если набирать текаст письма по-русски, эти символы приходят в непонятной кривой кодировке. Раскодировать никак не получается.

КАК ПОБЕДИТЬ ЭТУ ПРОБЛЕМУ? ПОДСКАЖИТЕ, ЕСЛИ КТО-НИБУДЬ ЗНАЕТ. :confused:

korkiss
26.05.2003, 15:31
скрипт скорее всего шлет в KOI-8, а флеш передает в winows-1251 (я предполагаю, проверять влом =))
если так, то ты можешь прописать в скрипте перекодировщик с помощью регекспа:
str =~ tr/алфавит win-1251 в кодировке Koi-8/АБВГД...ЭЮЯабвгдеё...эюя
то есть заменить все "каракули" на "нормальные" буквы вручную.

в твоем случае:
- посылаешь алфавит скрипту (с маленькими и большими буквами)
- получаешь скриптом "каракули"
- посылаешь как обычно
- получаешь "каракули" и узнаешь какая "каракуля" соответвует какой букве (тк слал алфавит)
- дописываешь в скрипте, чтобы он перед отсылкой менял все "каракули" на соотвертвующие буквы

^^^^
это ленивый способ =)

а если не влом, то сам разберись где какие кодировки и конверть при необходимости =)

что не понятно, спрашивай =)

roman58
26.05.2003, 16:25
Вот что мне приходит, когда я шлю такую строку:
абвгдеежзиклмнопрстуфхцчшщ АБВГДЕЕЖЗИКЛМНОПРСТУФХЦЧШЩ

абвгдеежзиклмнопСАСБСВСГСДСЕСЖСЗСИСЙ РРРСРТРУРФРХРХРЦРЧРШРЪРЫРЬРЭРЮРЯРаРбРвРгРдРеРжРзРиРй

так распознает TheBat, это кодировка Cyrillic (IBM-866/DOS)

или так

аАаБаВаГаДаЕаЕаЖаЗаИаКаЛаМаНаОаПбЂбЃб‚бѓб„б…б†б‡б?б‰ а*аЎаўаЈа¤аҐаҐа¦а§аЁаЄа«а¬а*а®аЇа°а±аІаіаґаµа¶а·аёа№

Это ISO-8859-5.

программы типа TOT-RECODE III вообще не могут найти ни одной комбинации перекодировки. Глухо как в танке.

Это не просто несовпадение кодировок KOI-8 и windows-1251. Тут вставляются еще символы между буквами. И их можно было бы вырезать, но в каждом наборе не присутствуют ВСЕ буквы. Можно кое-где увидеть цепочку последовательных букв, но она обрывается, потом где-то начинается снова.

Непросто это. Неужели только у меня такая проблема. На каждом углу в Интернете пишут, как из флэша почту отправлять, а что такие проблемы бывают, нигде не сказано. Это я "баран" или никто просто не писал такие приложения?
Может кто из профессионалов во флэше поможет? Это что, такая серьезная проблема?

Странно, что кроме вашего поста никакой реакции на мой вопрос.

В скрипте я поставил кодировку windows-1251. Замена символов одной кодировки на другую тут не поможет. Если бы вопрос был в этом, я бы сам, разобрался. Тем более, уже писал подобный перекодировщик текстов на C++. Но проблема, какя погляжу, гораздо серьезней. Если бы народ писал такие скрипты, то наверное был опыт решения таких проблем.

Если можете, подкиньте мыслишку. Спасибо.

CyberMax
26.05.2003, 20:54
Оригинал написал(а) roman58
Вот что мне приходит, когда я шлю такую строку:
абвгдеежзиклмнопрстуфхцчшщ АБВГДЕЕЖЗИКЛМНОПРСТУФХЦЧШЩ

абвгдеежзиклмнопСАСБСВСГСДСЕСЖСЗСИСЙ РРРСРТРУРФРХРХРЦРЧРШРЪРЫРЬРЭРЮРЯРаРбРвРгРдРеРжРзРиРй

Если можете, подкиньте мыслишку. Спасибо. Это Unicode UTF8. Попробуй System.useCodepage = true;
Либо работай с юникодными строками.

PS Кошмар, на дворе XXI век, а люди про юникод не слышали :D

TTS
27.05.2003, 02:57
System.useCodepage = true; не спасает.

TTS
27.05.2003, 11:46
Вроде как-то надо использовать iconv, но у меня после трёх часов попыток что-то не получилось.

roman58
27.05.2003, 13:50
Про Юникоды я слышал. Только не знал, что флэш шлет данные в этой кодировке по умолчанию, поскольку недано в нем работаю. Поэтому и просил помощи.

Когд прочитал пост CyberMax'a нашел в справочном файле эту самую useCodepage. Вот не дошел до этого раздела и в литературе нет этой информации. Надо бы купить книгу потолще по AS ;))

Короче, поставилu setCodepage = true. В процессе поиска решения в РНР-скрипте ставил различные кодировки в $headers, но в рабочем варианте убрал совсем эту строку. Т. е. пытался выдать полученные строки в Юникоде (еще без использования useCodepage), получался полный бред. Так что уберите из РНР кодировку и все будет работать.

Кстати, когда скрипт начал работать, перед этим моим последним действием была замена шрифта в динамических полях с OfficinaSansC на простой TimesNewRoman. Вот и думай, что к чему.

После того, как добился результата, решил поэкспериментировать с разными кодировками, вариантами РНР-скрипта, шрифтами. Короче, после всего решил вернуть все к работающему коду, но... тщетно. НЕ РАБОТАЛА, СВОЛОЧЬ!!!Все было один к одному. Уже и кэш почистил, и файлы все переименовал, и шрифты менял. Мля, кое-как получилось... Не знаю, что уж и как я сделал, но заработало.
Кстати, вообще заметил за флэшем такую особенность. Странный он какой-то, или глюковатый.

Спасибо КиберМаксу.

Для TTS: этот код будет работать, у меня же получилось. Но не надо забывать про прочие условия.

Вот полный текст скрипта на РНР, и мувик.

<?php

$to = $_POST['to'];
$message = $_POST['message'];
$namefrom = $_POST['from'];
$subject = $_POST['subject'];
$headers = "From: ";
$headers .=$namefrom;
$headers .= "<toTECHSUPPORT@your_server.ru>\r\n";

ini_set('SMTP', 'your_server.ru');
if (mail($to, $subject, $message, $headers)) {

// Здесь просто вывожу на экран переменные для контроля
echo ('* ');
print $to . ' * ';
print $namefrom . ' * ';
echo $subject . ' * ';
echo $message;
echo (' *');
echo ('The mail IS SENT');
} else {echo ('The mail IS NOT SENT');
}


МУВИК: вставляю в первый фрейм клипа.

System.useCodepage = true;

button.onRelease = function() {

getURL ("http://www.your_server.ru/your_script.php", "_blank", "POST");

}

TTS
27.05.2003, 14:26
Спасибо, конечно. Но если бы всё было так просто, я бы столько не мучился.
Какая кодировка у тебя получается при просмотре письма аутлуком?

roman58
27.05.2003, 14:42
А кто говорил, что у меня все просто получилось? Почитай сообщения.
Я сам дня 2 бился.

Я пользуюсь TheBat! В нем письмо нормально читается в кодировке Cyrillic (Windows-1251).

У тебя все еще не получается?

ЕСТЬ ЕЩЕ ОДИН МОМЕНТ.
Вся эта тема не будет работать если ты ТЕСТИРУЕШЬ КЛИП ИЗ ФЛЭША. Т. е. нужно создать htlm-страничку, вставить в нее клип. И так работать. Не обязательно выкладывать в Интернете, можно с винта.
Ты знаешь об этом? Если да, то я не знаю, в чем еще может быть проблема.
У меня браузер показывает правильно переменные на русском языке, если включить windows-1251.
В хелпе написано, что при использовании useCodepage=true страница будет отображаться в кодировке по-умолчанию. Т. е. если Винда нерусская, то может в этом причина. Тут надо использовать Юникод, но у меня с ним ничего не вышло. Я пробовал, отключая useCodepage, включать в браузере Unicode, но ни хера не было видно. Так что ага...

TTS
27.05.2003, 19:29
Проблема в том, что у меня сервер автоматически переводит текст из koi8-r в w1251. По любому, даже если текст не в koi8. Вот я и мучаюсь с перекодировкой. Вроде бы надо написать iconv("windows-1251","koi8-r", $message), а ни фига не пашет. Ни так ни по-другому.