этот пост написан не для них а для облегчения жизни другим чтобы они могли сюда послать всех лентяев
итак конвертируем WIN-1251 в UTF-8 и обратно на стороне сервера
function cp1251_to_utf8($s){
$c209 = chr(209);
$c208 = chr(208);
$c129 = chr(129);
for($i=0; $i<strlen($s); $i++){
$c=ord($s[$i]);
if ($c>=192 and $c<=239)
$t.=$c208.chr($c-48);
elseif ($c>239)
$t.=$c209.chr($c-112);
elseif ($c==184)
$t.=$c209.$c209;
elseif ($c==168)
$t.=$c208.$c129;
else
$t.=$s[$i];
}
return $t;
}
function utf8_to_cp1251($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;
elseif ($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;
}
Получили информацию от пользователя, чтото сделали с БД и получили масив результата который надо отправить обратно, для этого превращаем его такой функцией в JSON
function php2js($a){
if (is_null($a))
return 'null';
if ($a === false)
return 'false';
if ($a === true)
return 'true';
if (is_scalar($a)) {
$a = addslashes($a);
$a = str_replace("\n", '\n', $a);
$a = str_replace("\r", '\r', $a);
return "'$a'";
}
$isList = true;
for ($i=0, $j=count($a), reset($a); $i<$j; $i++, next($a))
if (key($a) !== $i) {
$isList = false;
break;
}
$result = array();
if ($isList) {
foreach ($a as $v)
$result[] = php2js($v);
return '[ ' . join(',', $result) . ' ]';
} else {
foreach ($a as $k=>$v)
$result[] = php2js($k) . ': ' . php2js($v);
return '{ ' . join(',', $result) . ' }';
}
}