Python3でrequests使っても日本語文字化けしないようにするには

Posted on October 11, 2014 at 12:37:05 UTC


requestsで日本語の含まれるファイルを落として内容を表示しようとしたら文字化けした。

そこで、検索して出てきた方法を試してみたが解決せず。

res.text じゃなくて res.content を使え

「requestsでレスポンスの中身の日本語が文字化けする」
( http://amagitakayosi.hatenablog.com/entry/20130504/1367693593 )

Python2だと確かにこれで動く。Python3だと例によって文字列とbytesの罠が…
結局こんな感じになった。

#Python3.4
import requests

#日本語の含まれる何らかのファイル
file_url = 'https://gist.githubusercontent.com/tpdn/c1a7b6672f8a52df6a21/raw/6aea4beb8dedeb8a7d333584a825634bd99967b0/gistfile1.txt'

response = requests.get(file_url)
print(response.text)  #文字化け or "can't encoding"
print(response.encoding)  #'ISO-8859-1'とかになってしまう(本来はutf-8)
response.encoding = response.apparent_encoding #apparent_encodingに置き換え
print(response.text) #文字化けしない

自動で判別したエンコード情報入らないのか…

参考