Войти

Показать полную графическую версию : Глюк Java Script?


benya
20-01-2005, 15:14
Народ нужно написать форму для отправки с сайта 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
Не глюк, а целая проблема
вот здесь (http://www.opennet.ru/prog/info/684.shtml) обсуждается эта проблема
Я нашёл хорошую статью на немецком, Вы случайно не владеете этим языком??

benya
24-01-2005, 12:11
А на 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
UTF-8 не спасает в эти моменты? Иначе нужно все, что после >#127 urlencode делать

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

vadimiron
24-01-2005, 16:29
mar
Вуаля, статья (http://aktuell.de.selfhtml.org/artikel/javascript/) :)
Она там в списке называется: "UTF-8 Konvertierung und base64-Codierung"
Кстати, на этой страничке есть пару интересных статей по Java Script-у, советую

benya
24-01-2005, 16:34
Фигня... Вопщем есть перл перекодировщик :

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

mar
25-01-2005, 10:35
vadimiron
спасибо :)




© OSzone.net 2001-2012