当IE在访问如下url
http://localhost/a.html?q=中文 |
在apache2 log里能看到以下内容
GET /a.html?q=\xd6\xd0\xce\xc4 HTTP/1.1 |
而在firefox中访问相同url
日志中看到的内容是对字符串进行urlencode过后的格式:
GET /a.html?q=%D6%D0%CE%C4 HTTP/1.1 |
现在IE下,\xd6在\x后面的d6是个16进制值,如果想将\xd6\xd0\xce\xc4直接还原出中文2个字比较困难。
不过在与firefox中的日志对比之下,能看出只要直接将\x替换成%,然后用php的urldecode反解析就能得到对应的字符串。
另外说明一点
这个例子中看到的值%D6%D0%CE%C4,是按gbk字符集进行urlencode计算得到的对应值,如果urldecode反解析得到是乱码,则日志记录的应该是utf-8格式的urlencode值,用php的iconv函数处理一下。