2009年9月23日水曜日

Unicode char<->int conversion in the PHP

Java
char c = (char) int;
int i = (int) char;

PHP
function num2utf($num){
if($num<128)return chr($num);
 if($num<2048)return chr(($num>>6)+192).chr(($num&63)+128);
if($num<65536)return chr(($num>>12)+224).chr((($num>>6)&63)+128).chr(($num&63)+128);
if($num<2097152)return chr(($num>>18)+240).chr((($num>>12)&63)+128).chr((($num>>6)&63)+128) .chr(($num&63)+128);
return '';
}

function utf2num($utf)
{
$tmp = ord($utf{0});
if ($tmp<128)return $tmp;
 if ($tmp<224)return (($tmp-192)<<6) + (ord($utf{1})-128);
 if ($tmp<240)return (($tmp-224)<<12)+ ((ord($utf{1})-128)<<6) +(ord($utf{2})-128);
 if ($tmp<248)return (($tmp-240)<<18) + ((ord($utf{1})-128)<<12)+((ord($utf{2})-128)<<6) + (ord($utf{3})-128);
 return '';
}
see also PHP: utf8_encode - Manual http://sk2.php.net/manual/en/function.utf8-encode.php#49336

0 件のコメント:

コメントを投稿