PHP urlencoding问题

时间:2012-12-10 10:01:27

标签: php urlencode

我的php文件是UTF-8编码,我正在尝试对我的数据进行编码,以便安全地发送到应用程序,但有些字符编码错误。

$text = "Š";
$text = urlencode(utf8_decode($text));
echo $text;

Echos%3F但根据此处的w3c urlencoding参考(http://www.w3schools.com/tags/ref_urlencode.asp),“Š”应转换为%8A。 Php自己的参考也没有说明它使用的是什么参考。这可能是编码/解码问题还是别的什么?

1 个答案:

答案 0 :(得分:0)

utf8_decode尝试从UTF-8转换为ISO-8859-1,但ISO-8859-1中不存在Š。所以你得到'?' (=%3F),替换字符。

它存在于CP1252(可能是其他的)中,在十六进制代码8A下。所以:

$text = urlencode(iconv('UTF-8', 'CP1252', $text));

应该给出你期望的东西。实际上,您不应该解码unicode字符串。