我正在解析我的 nginx 日志,并且我想从 HTTP_REFERER 字符串中发现一些详细信息,例如,用于查找网站的查询字符串。一位用户输入了“México”,在日志中被编码为“query=M%E9xico”。
通过这个Rack::Utils.parse_query('query=M%E9xico')
你得到一个哈希,{"query" => "M?xico"}
当您将“M?exico”塞入 Postgres(但不是更宽容的 SQLite)时,它会呕吐,因为字符串不是正确的 UTF-8。查看http://rack.rubyforge.org/doc/Rack/Utils.html#M000324,unescape 正在打包一个十六进制字符串。
如何将字符串转换回 UTF-8,或者我可以让 parse_query 首先返回 UTF-8。