我正在解析我的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