我正在解析我的nginx日志,我想从HTTP_REFERER字符串中发现一些细节,例如用于查找网站的查询字符串。一个用户输入“México”,它在日志中被编码为“query = M%E9xico”。HTML编码UTF-8字符串被拉扯到拉丁文中
通过Rack::Utils.parse_query('query=M%E9xico')
传递这个你得到一个哈希,{"query" => "M?xico"}
当你的东西“M?exico”到Postgres的(但不是更多的宽容SQLite的),它pukes因为字符串是不妥当的UTF-8 。看着http://rack.rubyforge.org/doc/Rack/Utils.html#M000324,unescape正在打包一个十六进制字符串。
如何将字符串转换回UTF-8,或者我能否首先获取parse_query返回UTF-8。
信息已经打破了日志中:%E9表明它是不是UTF-8。如果不假设初始字符集是什么,就不能对其进行转换。 – 2010-04-01 02:17:26