私は簡単な解決策があると信じている問題を抱えています。
URL から JSON 文字列を読み取って解析する Python スクリプトを作成しています。これを行うために、urllib2 と simplejson を使用しています。
私が抱えている問題は、エンコーディングに関係しています。私が読んでいる URL は、それがどのエンコーディングであるかを明示的に述べておらず (私が知る限り)、いくつかのアイスランド文字を返します。ここから読み取っている URL を提供することはできませんが、サンプルの JSON データ ファイルを自分のサーバーにセットアップしましたが、それを読み取るのにも問題があります。ファイルは次のとおりです。http://haukurhaf.net/json.txt
これは私のコードです:
# coding: utf-8
#!/usr/bin/env python
import urllib2, re, os
from BeautifulSoup import BeautifulSoup
import simplejson as json
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3'
def fetchPage(url):
req = urllib2.Request(url)
req.add_header('User-Agent', user_agent)
response = urllib2.urlopen(req)
html = response.read()
response.close()
return html
html = fetchPage("http://haukurhaf.net/json.txt")
jsonData = json.JSONDecoder().decode(html)
JSON パーサーが次のエラー メッセージでクラッシュします: UnicodeDecodeError: 'utf8' codec can't decode byte 0xe1 in position 35: invalid continuation byte
JSON データを保持するサーバーを制御できないため、サーバーが送信するエンコード ヘッダーを制御できません。どうにかして、これを自分の側で解決できることを願っています。
何か案は?