2013-08-17

User-Agentに漢字が混ざっててエラー

djangoだと、request.META.get("HTTP_USER_AGENT", "") ってやってUser-Agentを取得できる。django1.3.1を使っているんだけど、ユニコードではなくて、バイト文字列が返されるみたい。普通はASCII文字以外は含まれていないから問題ないんだけど、中国とかベトナムからのアクセスだと、User-Agentに漢字などが含まれているものがあって、それが原因でエラーになってた。
request.META.get("HTTP_USER_AGENT", "").decode("utf-8")
ってやればたぶん大丈夫。

こんなのがある。

Mozilla/5.0 (Linux; U; Android 4.2.1; zh-cn; W1+(MT6589/4核) Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30

Mozilla/5.0 (Linux; U; Android 4.1.2; vi-vn; IM-A830K Build/JZO54K) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Điện thoạiSafari/534.30

Mozilla/5.0 (Linux; U; Android 4.0.4; zh-cn; A10双核(8DM1) Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30

0 件のコメント: