PHP头条
热点:

乱码-一段转换编码的代码在在线测试的时候正常,写入php文件运行却不正常!


乱码编码php测试

function encode($c)

{

$len = strlen($c);

$scill='';
$jieguo='';
$a = 0;

while ($a < $len)

{

$ud = 0;

if (ord($c{$a}) >=0 && ord($c{$a})<=127)

{

$ud = ord($c{$a});

$a += 1;

}

else if (ord($c{$a}) >=192 && ord($c{$a})<=223)

{

$ud = (ord($c{$a})-192)*64 + (ord($c{$a+1})-128);

$a += 2;

}

else if (ord($c{$a}) >=224 && ord($c{$a})<=239)

{

$ud = (ord($c{$a})-224)*4096 + (ord($c{$a+1})-128)*64 + (ord($c{$a+2})-128);

$a += 3;

}

else if (ord($c{$a}) >=240 && ord($c{$a})<=247)

{

$ud = (ord($c{$a})-240)*262144 + (ord($c{$a+1})-128)*4096 + (ord($c{$a+2})-128)*64 + (ord($c{$a+3})-128);

$a += 4;

}

else if (ord($c{$a}) >=248 && ord($c{$a})<=251)

{

$ud = (ord($c{$a})-248)*16777216 + (ord($c{$a+1})-128)*262144 + (ord($c{$a+2})-128)*4096 + (ord($c{$a+3})-128)*64 + (ord($c{$a+4})-128);

$a += 5;

}

else if (ord($c{$a}) >=252 && ord($c{$a})<=253)

{

$ud = (ord($c{$a})-252)*1073741824 + (ord($c{$a+1})-128)*16777216 + (ord($c{$a+2})-128)*262144 + (ord($c{$a+3})-128)*4096 + (ord($c{$a+4})-128)*64 + (ord($c{$a+5})-128);

$a += 6;

}

else if (ord($c{$a}) >=254 && ord($c{$a})<=255)

{ //error

$ud = false;

}

$scill = dechex($ud); // 再把结果十进制转换为十六进制

    $jieguo .= "&#x".$scill.";";}  return $jieguo;  

}

echo encode('你好');
?>

一段中文汉字转换到ASCII,再转换到十进制,并且前缀添加"&#x" 后缀添加";" 的代码.
我在一些在线PHP测试网站里测试输出是正常的.
如在这里测试:
http://www.mcqyy.com/RunCode/php/
是正常的输出的
输出的结果是编码的模式,但是在html里是可以显示出中文的,如下动图:
图片说明

但是我再架设到php5.2 IIS7 的环境下,服务器跟本地都运行测试了.
输出的确是乱码的。
同样是以"你好"作为输出错误乱码,或者是单独文件运行的时候显示
图片说明
请看源文件以及输出结果:
结合到其他文件里运行的时候,"你好"则出乱码为“ ɕ”并且编码为:ɕ

请问是哪里出错了?

www.phpzy.comtrue/phpyy/4318.htmlTechArticle乱码-一段转换编码的代码在在线测试的时候正常,写入php文件运行却不正常! 乱码编码php测试 function encode($c) { $len = strlen($c); $scill=''; $jieguo=''; $a = 0; while ($a { $ud = 0; if (ord($c{$a}) >=0 o...

相关文章

相关频道:

PHP之友评论

今天推荐