使用PHP 5.3.2时,我在处理名称中包含元音的页面的请求时遇到了问题:ö
使用Firefox + Live HTTP Header为test_ö_test.htm页面发出请求,我可以看到firefox在发出请求时会自动转换/编码umlaut:
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()将其转换回元音。
发布于 2010-11-10 20:04:50
您的页面声明为ISO-8859-1,而数据为UTF-8编码。这导致浏览器试图将两个字节的UTF-8序列0xc3 0xb6解释为两个字符的拉丁文-1序列“拉丁文大写字母A WITH TILDE”"PILCROW SIGN“。您的数据和页面的内容编码需要一致。
https://stackoverflow.com/questions/4029266
复制相似问题