Просмотр полной версии : ПОЖАЛУЙСТА ПОМОГИТЕ с кодировкой почты, отправляемой из Flash
:eek: Я уже голову сломал с этой прооблемой. Отпраляю почту в PHP скрипт, используя методы getURL и loadVars.send или sendAndLoad. Данные беру из текстовых полей.
Все нормально работает, но только если содержимое полей (кому, от кого, сообщение, тема) вводится на английском языке. Если набирать текаст письма по-русски, эти символы приходят в непонятной кривой кодировке. Раскодировать никак не получается.
КАК ПОБЕДИТЬ ЭТУ ПРОБЛЕМУ? ПОДСКАЖИТЕ, ЕСЛИ КТО-НИБУДЬ ЗНАЕТ. :confused:
скрипт скорее всего шлет в KOI-8, а флеш передает в winows-1251 (я предполагаю, проверять влом =))
если так, то ты можешь прописать в скрипте перекодировщик с помощью регекспа:
str =~ tr/алфавит win-1251 в кодировке Koi-8/АБВГД...ЭЮЯабвгдеё...эюя
то есть заменить все "каракули" на "нормальные" буквы вручную.
в твоем случае:
- посылаешь алфавит скрипту (с маленькими и большими буквами)
- получаешь скриптом "каракули"
- посылаешь как обычно
- получаешь "каракули" и узнаешь какая "каракуля" соответвует какой букве (тк слал алфавит)
- дописываешь в скрипте, чтобы он перед отсылкой менял все "каракули" на соотвертвующие буквы
^^^^
это ленивый способ =)
а если не влом, то сам разберись где какие кодировки и конверть при необходимости =)
что не понятно, спрашивай =)
Вот что мне приходит, когда я шлю такую строку:
абвгдеежзиклмнопрстуфхцчшщ АБВГДЕЕЖЗИКЛМНОПРСТУФХЦЧШЩ
абвгдеежзиклмнопСАСБСВСГСДСЕСЖСЗСИСЙ РРРСРТРУРФРХРХРЦРЧРШРЪРЫРЬРЭРЮРЯРаРбРвРгРдРеРжРзРиРй
так распознает 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
System.useCodepage = true; не спасает.
Вроде как-то надо использовать iconv, но у меня после трёх часов попыток что-то не получилось.
Про Юникоды я слышал. Только не знал, что флэш шлет данные в этой кодировке по умолчанию, поскольку недано в нем работаю. Поэтому и просил помощи.
Когд прочитал пост 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");
}
Спасибо, конечно. Но если бы всё было так просто, я бы столько не мучился.
Какая кодировка у тебя получается при просмотре письма аутлуком?
А кто говорил, что у меня все просто получилось? Почитай сообщения.
Я сам дня 2 бился.
Я пользуюсь TheBat! В нем письмо нормально читается в кодировке Cyrillic (Windows-1251).
У тебя все еще не получается?
ЕСТЬ ЕЩЕ ОДИН МОМЕНТ.
Вся эта тема не будет работать если ты ТЕСТИРУЕШЬ КЛИП ИЗ ФЛЭША. Т. е. нужно создать htlm-страничку, вставить в нее клип. И так работать. Не обязательно выкладывать в Интернете, можно с винта.
Ты знаешь об этом? Если да, то я не знаю, в чем еще может быть проблема.
У меня браузер показывает правильно переменные на русском языке, если включить windows-1251.
В хелпе написано, что при использовании useCodepage=true страница будет отображаться в кодировке по-умолчанию. Т. е. если Винда нерусская, то может в этом причина. Тут надо использовать Юникод, но у меня с ним ничего не вышло. Я пробовал, отключая useCodepage, включать в браузере Unicode, но ни хера не было видно. Так что ага...
Проблема в том, что у меня сервер автоматически переводит текст из koi8-r в w1251. По любому, даже если текст не в koi8. Вот я и мучаюсь с перекодировкой. Вроде бы надо написать iconv("windows-1251","koi8-r", $message), а ни фига не пашет. Ни так ни по-другому.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.