亂碼-一段轉換編碼的代碼在線上測試的時候正常,寫入php檔案運行卻不正常!

來源:互聯網
上載者:User
關鍵字 亂碼 編碼 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 的環境下,伺服器跟本地都運行測試了.
輸出的確是亂碼的。
同樣是以"你好"作為輸出錯誤亂碼,或者是單獨檔案啟動並執行時候顯示

請看源檔案以及輸出結果:
結合到其他檔案裡啟動並執行時候,"你好"則出亂碼為“ ɕ”並且編碼為:ɕ

請問是哪裡出錯了?

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.