zipcloudという郵便番号から住所を検索できるAPIをpython3で利用しているときに、ターミナルで日本語が表示できなかったのでシェアします
元々のコード
import urllib.request
url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=1000005'
contents = urllib.request.urlopen(url).read()
print(contents)
// ターミナルでの結果
b'{\n\t"message": null,\n\t"results": [\n\t\t{\n\t\t\t"address1":
"\xe6\x9d\xb1\xe4\xba\xac\xe9\x83\xbd",\n\t\t\t"address2":
"\xe5\x8d\x83\xe4\xbb\xa3\xe7\x94\xb0\xe5\x8c\xba",\n\t\t\t"address3":
"\xe4\xb8\xb8\xe3\x81\xae\xe5\x86\x85",\n\t\t\t"kana1": "
\xef\xbe\x84\xef\xbd\xb3\xef\xbd\xb7\xef\xbd\xae\xef\xbd\xb3\xef\xbe\x84"
,\n\t\t\t"kana2": "\xef\xbe\x81\xef\xbe\x96\xef\xbe\x80\xef\xbe\x9e\xef\xbd\xb8",\n\t\t\t"kana3":
"\xef\xbe\x8f\xef\xbe\x99\xef\xbe\x89\xef\xbd\xb3\xef\xbe\x81",\n\t\t\t"prefcode":
"13",\n\t\t\t"zipcode": "1000005"\n\t\t}\n\t],\n\t"status": 200\n}'
修正版
デコードしてやることで解決できました!
import urllib.request
url = 'http://zipcloud.ibsnet.co.jp/api/search?zipcode=1000005'
contents = urllib.request.urlopen(url).read()
# ここが追加個所
contents = contents.decode('utf-8')
print(contents)
// 結果
{
"message": null,
"results": [
{
"address1": "東京都",
"address2": "千代田区",
"address3": "丸の内",
"kana1": "トウキョウト",
"kana2": "チヨダク",
"kana3": "マルノウチ",
"prefcode": "13",
"zipcode": "1000005"
}
],
"status": 200
}

コメントを残す