PHP urlencode字符集编码问题


PHP urlencode charset encoding issue

我得到了这个php脚本:

$str = "ú";
echo $str . ' -> ' . urlencode($str) . "'n" ;

预期结果:

ú -> %FA

参考:http://www.w3schools.com/tags/ref_urlencode.asp

实际结果

ú -> %C3%BA

试试这个:

urlencode(utf8_decode($str));

这应该会给你带来预期的结果。

您将ú编码为UTF-8(请检查示例代码的编码),因此urlencode确实将其正确编码为%C3%BA

你或多或少指的是:

$str = "'xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "'n" ;

无论您如何编码php代码/-file:,它都会给您带来预期的结果

ú -> %FA

Demo,该站点使用UTF-8来存储源代码。如果您希望输出显示为LATIN-1,此附加示例会向浏览器发出LATIN-1字符集的信号:

header('Content-Type: text/html; charset=latin-1');
$str = "'xFA"; # ú in LATIN-1
echo $str . ' -> ' . urlencode($str) . "'n" ;