![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|
|
|||||
|
Регистрация: Oct 2006
Сообщений: 73
|
Здравствуйте, помогите разобраться
если не конвертировать принимаеый из 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";
Последний раз редактировалось iNils; 07.11.2006 в 04:15. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
GRiNGA, приведенный код ни о чём не говорит. Точнее разбираться в том, что он делает, врядли кто будет.
Важно знать лишь то, что flash работает только с utf-8 и все данные он посылает именно в этой кодировке (и принимает тоже). Какой смысла конвертировать данные на сервере в win, а потом обратно конвертировать в utf, чтобы отдать флешу — мне непонятно. |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 73
|
Цитата:
Я знаю, что флеш воспринимает тока юникод. Поэтому я передаю из флеш в php определенные переменные, из которых php делает строку и сохраняет в csv-файл. А потом для подтверждения сохранения php загружает эту строку из файла и передает во flash. так вот, если ничего не конвертить, то все передается нормально, но абракадаброй. а если конвертить, то строка из php передается как undefined почему-не пойму |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А что, csv не поддерживает юникод?
|
|
|||||
|
Modus ponens
|
2 iNils, GRiNGA:
не, сорь, мне просто интересно было как человек конвертировал в юникоды =) тоже что-то похожее надо сделать
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Oct 2006
Сообщений: 73
|
Разобрался!!!
Все работает, только надо было отключить E_Notice |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:13. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|