> 백엔드 개발 > PHP 튜토리얼 > 乱码-一段转换编码的代码在在线测试的时候正常,写入php文件运行却不正常!

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

WBOY
풀어 주다: 2016-06-02 11:28:00
원래의
1099명이 탐색했습니다.

乱码编码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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿