Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   Глюк Java Script? (http://forum.oszone.net/showthread.php?t=44144)

benya 20-01-2005 15:14 290390

Глюк Java Script?
 
Народ нужно написать форму для отправки с сайта e-maila!! В принципе это сделать не очень сложно даже новичку.
Принцип хочу сделать такой. После нажатия на кнопку отправить, вылетает маленькое pop-up окошко с результатом, типа "Ошибка" или "Ваше сообщение отправлено"
Делаю так :
Код:

<SCRIPT>
        function otp() {
                fo='<form method="POST" action="http://localhost/cgi-bin/sms.cgi" name="sms"><input name="text" type="hidden" value="'+document.smss.tx.value+'"><input name="name" type="hidden" value="'+document.smss.nm.value+'"><input name="mail" type="hidden" value="'+document.smss.ml.value+'"></form>';
                OWind=window.open('','results','toolbar=0,width=305,height=150');
                OWind.document.write(fo);
                OWind.document.sms.submit();
               
                }
</SCRIPT>

<form name="smss" >
<TEXTAREA  name=tx rows=10 cols=62></TEXTAREA>                                                               
<input name="nm" type="text" size="11" maxlength="15" value="Имя">
<input name="ml" type="text" size="10" maxlength="32" value="E-mail">
<input name="button" type="button" onclick="otp();"  value="Отправить">
</form>

Нажимаю кнопку отправить, вызывается функция, которая создает маленькое окошко со скрытой формой, туда переносятся параметрами предыдущей формы и автоматом отправляется.
Так в чем же проблема? Да проблема в том, что форма созданная java sriptом не отправляет текста на русском языке (!). Например слово привет выглядит как привет
Что это за кодировка такая и чем отличается форма созданная java scriptom и обычная html мне не понятно до сих пор. Мне даже пришлось звонить одному программеру и спрашивать что за фигня такая...
Он тут же и ответил - да забрось ты на это маленкое окошко, ничего не выйдет, сам над этим 4 дня бился - это глюк какой-то.
Народ так что за глюк такой, кто сталкивался???? Как проблему решить? Может я что-то не то делаю? Подскажите хоть как на perl написать перекодировщик ;)

vadimiron 22-01-2005 01:23 290927

Не глюк, а целая проблема
вот здесь обсуждается эта проблема
Я нашёл хорошую статью на немецком, Вы случайно не владеете этим языком??

benya 24-01-2005 12:11 291568

А на ixbt чувак ответили типа ..
Я использую следующуу функцию:
Код:

String.prototype.urlencode = function()
    //(с) Владимир Палант xpoint.ru
{
    var ret = '';
 
    for (i=0; i<this.length; i++)
    {
        var n = this.charCodeAt(i);
        if (n >= 0x410 && n <= 0x44F)
            n -= 0x350;
        else if (n == 0x451)
            n = 0xB8;
        else if (n == 0x401)
            n = 0xA8;
        if ((n < 65 || n > 90) && (n < 97 || n > 122) && n < 256)
        {
            if (n < 16)
                ret += '%0'+n.toString(16);
            else
                ret += '%'+n.toString(16);
        }
        else
            ret += String.fromCharCode(n);
    }
    return ret;
}
 
alert('привет'.urlencode()) //%EF%F0%E8%E2%E5%F2

Будем пробовать.... Хотя я уже на Перл написал раскодировщик.. Заместь абракадабры подставлением сделал на нормальные буквы.... Вобщем перепробую несколько способов..

archy 24-01-2005 14:37 291624

UTF-8 не спасает в эти моменты? Иначе нужно все, что после >#127 urlencode делать

mar 24-01-2005 14:54 291632

vadimiron
кинь ссылку на статью, pls - я, правда немецкий сильно перезвабыла, но все же :)

vadimiron 24-01-2005 16:29 291676

mar
Вуаля, статья :)
Она там в списке называется: "UTF-8 Konvertierung und base64-Codierung"
Кстати, на этой страничке есть пару интересных статей по Java Script-у, советую

benya 24-01-2005 16:34 291678

Фигня... Вопщем есть перл перекодировщик :
Код:

$bad ="С‘1Р№1С†1Сѓ1Рє1Рµ1РЅ1Рі1С?1С‰1Р·1С…1СЉ1С„1С‹1РІ1Р°1Рї1СЂ1Рѕ1Р»1Рґ1Р¶1СЌ1СЏ1С‡1СЃ1Рј1Рё1С‚1СЊ1Р±1СЋ1РЃ1Р™1Р¦1РЈ1Рљ1Р•1Рќ1Р“1РЁ1Р©1Р—1РҐ1РЄ1Р¤1Р«1Р’1Рђ1Рџ1Р*1Рћ1Р›1Р”1Р–1Р*1РЇ1Р§1РЎ1Рњ1Р?1Рў1Р¬1Р‘1Р®";
$buk = "ё1й1ц1у1к1е1н1г1ш1щ1з1х1ъ1ф1ы1в1а1п1р1о1л1д1ж1э1я1ч1с1м1и1т1ь1б1ю1Ё1Й1Ц1У1К1Е1Н1Г1Ш1Щ1З1Х1Ъ1Ф1Ы1В1А1П1Р1О1Л1Д1Ж1Э1Я1Ч1С1М1И1Т1Ь1Б1Ю";
@glu = split(/1/, $bad);
@nor = split(/1/, $buk);
Ну и там где происходит раскодировка urlencoded вставить ссылку &folt;
sub folt {
for ($i=0; $i<65; $i++){
$value =~ s/$glu[$i]/$nor[$i]/g;       
}

Вроде работает...

Dafi 25-01-2005 00:11 291791

"привет"-похоже на "ПРИВЕТ" в утф-8. я недавно тоже пробовал все эти перекодировки, 2-х баитный код в обоих случаях, но похоже "уникод" и "утф-8" не одно и тоже, (!?), те утф-8 можно составить из w1251 следующим образом:
(w1251): русское "А" =русское "Р" старший байт и "ђ" (chr(0x90)), далее Р+chr(0x91) до "п", , те А.....Яа...п. от "р" меняется префикс на рус. "С", младший баит-коды идут подряд от 0x90 до конца.
ну и перекодировка соответственно...

mar 25-01-2005 10:35 291890

vadimiron
спасибо :)


Время: 20:20.

Время: 20:20.
© OSzone.net 2001-