首頁 > 後端開發 > php教程 > 乱码-一段转换编码的代码在在线测试的时候正常,写入php文件运行却不正常!

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

WBOY
發布: 2016-06-02 11:28:00
原創
1115 人瀏覽過

乱码编码php测试

function encode($c)

{

$len = strlen($c);

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

while ($a
{

$ud = 0;

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

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

$a += 1;

}

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

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

$a += 2;

}

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

$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})
{

$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})
{

$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})
{

$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})
{ //error

$ud = false;

}

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

<code>    $jieguo .= "".$scill.";";}  return $jieguo;  </code>
登入後複製

}

echo encode('你好');
?>

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

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

请问是哪里出错了?

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板