簡體   English   中英

為什么PHP的urlencode使用不同的URL編碼?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM