PDA

Просмотр полной версии : PHP не передает правильно переменную во flash


GRiNGA
06.11.2006, 21:11
Здравствуйте, помогите разобраться
если не конвертировать принимаеый из flash текст в вин-кодировку,
PHP скрипт правильно его не сохраняет,
а если конвертировать, то не передает обратно во Flash переменную inText

в чем может быть дело?


function utf_to_win($s){
for ($c=0;$c<strlen($s);$c++){
$i=ord($s[$c]);
if ($i<=127) $out.=$s[$c];
if ($byte2){
$new_c2=($c1&3)*64+($i&63);
$new_c1=($c1>>2)&5;
$new_i=$new_c1*256+$new_c2;
if ($new_i==1025){
$out_i=168;
} else {
if ($new_i==1105){
$out_i=184;
} else {
$out_i=$new_i-848;
}
}
$out.=chr($out_i);
$byte2=false;
}
if (($i>>5)==6) {
$c1=$i;
$byte2=true;
}
}
return $out;
}



function win_to_utf($s) {
for($i=0, $m=strlen($s); $i<$m; $i++) {
$c=ord($s[$i]);
if ($c<=127) {$t.=chr($c); continue; }
if ($c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; }
if ($c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
if ($c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
if ($c==184) { $t.=chr(209).chr(209); continue; };
if ($c==168) { $t.=chr(208).chr(129); continue; };
}
return $t;
}
$inText="";
if ($_POST['name_1']&&$_POST['name_2']) {
/*
foreach ($_POST as $key => $value){
$inText.=">".$key."_".$value."<";
}
print "inText=".$inText;
*/
//çàïèñü â ôàéë
$str=$_POST['nomer'].",".$_POST['name_1'].",".$_POST['name_2'].",".$_POST['name_3'].",".$_POST['dok'].",".$_POST['dok_n'];
//$str_w=iconv('UTF-8', 'CP1251', $str);
$str_w=utf_to_win($str."\r\n");
$data="data.csv";
if(is_file($data) && is_writable($data))
{
$fd=fopen($data,"a") or die("<p class=error>Íå ìîãó îòêðûòü ôàéë $data</p>");
flock($fd,2);
fputs($fd,$str_w);
flock($fd,3);
fclose($fd);
}
if(is_file($data) && is_readable($data))
{
$fd=fopen($data,"r") or die("<p class=error>Íå ìîãó îòêðûòü ôàéë $data</p>");
$total=file("$data");
print win_to_utf("inText=".$total[0]);
fclose($fd);
}
} else print "inText=949956";

wvxvw
07.11.2006, 02:03
а можно убрать раскраску?.. невозможно ж прочитать...

iNils
07.11.2006, 04:15
а можно убрать раскраску?.. невозможно ж прочитать...Это не его вина. Перевел PHP в CODE.

etc
07.11.2006, 05:17
GRiNGA, приведенный код ни о чём не говорит. Точнее разбираться в том, что он делает, врядли кто будет.

Важно знать лишь то, что flash работает только с utf-8 и все данные он посылает именно в этой кодировке (и принимает тоже). Какой смысла конвертировать данные на сервере в win, а потом обратно конвертировать в utf, чтобы отдать флешу — мне непонятно.

GRiNGA
07.11.2006, 11:51
GRiNGA, приведенный код ни о чём не говорит. Точнее разбираться в том, что он делает, врядли кто будет.

Важно знать лишь то, что flash работает только с utf-8 и все данные он посылает именно в этой кодировке (и принимает тоже). Какой смысла конвертировать данные на сервере в win, а потом обратно конвертировать в utf, чтобы отдать флешу — мне непонятно.


Я знаю, что флеш воспринимает тока юникод.
Поэтому я передаю из флеш в php определенные переменные, из которых php делает строку и сохраняет в csv-файл.
А потом для подтверждения сохранения php загружает эту строку из файла и передает во flash.

так вот, если ничего не конвертить, то все передается нормально, но абракадаброй.
а если конвертить, то строка из php передается как undefined
почему-не пойму

etc
07.11.2006, 13:51
А что, csv не поддерживает юникод?

wvxvw
07.11.2006, 19:19
2 iNils, GRiNGA:
не, сорь, мне просто интересно было как человек конвертировал в юникоды =) тоже что-то похожее надо сделать

GRiNGA
07.11.2006, 19:46
Разобрался!!!:yahoo:
Все работает, только надо было отключить E_Notice