4

η 的 URL 编码是%CE%B7。但是在 PHP 中,我在编写时会得到一些奇怪的符号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 的答案。

4

2 回答 2

7

urldecode("%ce%b7")产生以 UTF-8 编码的η 。如果您正在使用其他编码查看输出,您可能会看到其他内容。

另一方面,当您解码%26%23951%3B时,您确实没有获得 η;您获得η了 η 的 HTML 实体代码。要解码实体代码,请使用html_entity_decode

echo html_entity_decode('η', false, 'UTF-8'); // prints η, encoded in UTF-8
于 2012-10-16T14:33:36.747 回答
2

您可以尝试以下方法

header('Content-Type: text/html; charset=utf-8');
echo urldecode("%ce%b7"); // output : η

观看现场演示

于 2012-10-16T14:28:01.570 回答