php,urldecode()和变形金刚 - ö

时间:2010-10-27 01:16:38

标签: php urlencode

使用PHP 5.3.2,我在处理对其名称中包含变音符号的页面的请求时遇到问题:ö

使用Firefox + Live HTTP Headers为test_ö_test.htm页面发出请求,我可以看到firefox在发出请求时自动转换/编码变音符号:

GET /test_%C3%B6_test.htm HTTP/1.1

现在,使用http://meyerweb.com/eric/tools/dencoder/我可以在test_ö_test.htm和test_%C3%B6_test.htm之间进行编码/解码,所以我认为编码是正确的。

使用PHP的urldecode(),我得到test_ö_test.htm

又讨厌厌烦的404。请注意,test_ö_test.htm确实存在于文件系统中。

当我使用javascript的escape()测试时,我得到test_%F6_test.htm。当我将其插入浏览器时,我会成功返回内容页面。 urldecode()将其转回到变音符号。

1 个答案:

答案 0 :(得分:2)

您的页面被声明为ISO-8859-1,而您的数据是UTF-8编码的。这导致浏览器试图将两个字节的UTF-8序列0xc3 0xb6解释为两个字符Latin-1序列“LALIN CAPITAL LETTER A WITH TILDE”“PILCROW SIGN”。您的数据和页面的内容编码需要达成一致。