[英]Why does PHP's urlencode use different URL encoding?
η的URL編碼是%CE%B7
。 但在PHP中,當我寫echo urldecode("%ce%b7");
時,我會得到一些奇怪的符號echo urldecode("%ce%b7");
相反,如果我寫echo urlencode("η");
然后我得到%26%23951%3B
。 為什么我不能使用%CE%B7
?
解
問題是我們使用typo3。 它有些如何不使用unicode進行內部處理。 一旦我們設置$TYPO3_CONF_VARS['BE']['forceCharset'] = 'utf-8';
在typo3中輸出echo urldecode("%ce%b7");
是對的。
為什么echo urlencode("η");
給我%26%23951%3B
看到Joni的答案。
urldecode("%ce%b7")
產生以UTF-8編碼的 η。 如果您使用其他編碼查看輸出,您可能會看到其他內容。
另一方面,當您解碼%26%23951%3B
時,您確實沒有獲得η; 你得到η
這是η的HTML實體代碼。 要解碼實體代碼,請使用html_entity_decode
:
echo html_entity_decode('η', false, 'UTF-8'); // prints η, encoded in UTF-8
您可以嘗試以下方法
header('Content-Type: text/html; charset=utf-8');
echo urldecode("%ce%b7"); // output : η
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.