nginxログを解析していますが、HTTP_REFERER文字列(たとえば、Webサイトの検索に使用されるクエリ文字列)からいくつかの詳細を検出したいと思います。1人のユーザーが「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は16進文字列をパックしています。
文字列をUTF-8に戻すにはどうすればよいですか、またはparse_queryを取得して最初にUTF-8を返すことができますか。