PHP urlencode charset编码问题

时间:2012-02-15 14:20:29

标签: php character-encoding urlencode

我有这个PHP脚本:

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

预期结果:

ú -> %FA

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

实际结果

ú -> %C3%BA

2 个答案:

答案 0 :(得分:4)

试试这个:

urlencode(utf8_decode($str));

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

答案 1 :(得分:2)

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

你或多或少是指这个:

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

无论你如何对php-code / -file进行编码,它都能为你提供预期的结果:

ú -> %FA

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

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