У меня проблема, которая, как мне кажется, имеет простое решение.
Я пишу скрипт Python, который читает строку JSON из URL-адреса и анализирует ее.Для этого я использую 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» не может декодировать байт 0xe1 впозиция 35: недопустимый байт продолжения
Поскольку у меня нет никакого контроля над сервером, который хранит данные JSON, я не могу контролировать, какие заголовки кодирования он отправляет.Я надеюсь, что смогу как-то решить это со своей стороны.
Есть идеи?