Ошибка Юникода при использовании JSON - PullRequest
1 голос
/ 06 февраля 2012

Я знаю, что были опубликованы похожие вопросы, но я думаю, что проблема, с которой я столкнулся, немного отличается от них. Пожалуйста, потерпите меня; Я только начал использовать Python 4 месяца назад, и я уверен, что моя незрелость показывает!

Я пишу программу, которая отображает данные LinkedIn из CSV-файла, используя плагин Protovis в дендрограмме. Насколько я вижу, плагин настроен правильно, и все это основано на O'Reilly's Mining the Social Web. Однако когда я запускаю свой код в IDLE, я получаю следующее сообщение об ошибке:

Traceback (most recent call last):
 File "C:/Users/Envy 15/Desktop/MASIDendo", line 115, in <module>
    html = open(HTML_TEMPLATE).read() % (json.dumps(json_output),)
  File "C:\Python27\lib\json\__init__.py", line 231, in dumps
    return _default_encoder.encode(obj)
  File "C:\Python27\lib\json\encoder.py", line 201, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "C:\Python27\lib\json\encoder.py", line 264, in iterencode
    return _iterencode(o, 0)
UnicodeDecodeError: 'utf8' codec can't decode byte 0x96 in position 17: invalid start `byte`

Теперь, насколько я понимаю, причина ошибки Unicode заключается в том, что в одном из моих имен файлов есть не-Unicode символ, однако я проверил их, но это не так. Часть моего кода, на которую он указывает:

html = open(HTML_TEMPLATE).read() % (json.dumps(json_output),)
f = open(os.path.join(os.getcwd(), 'out', OUT), 'w')
f.write(html)
f.close()

print 'Data file written to: %s' % f.name

# Open up the web page in your browser

webbrowser.open('file://' + f.name)

Любая помощь с этим будет высоко ценится!

Ответы [ 2 ]

2 голосов
/ 06 февраля 2012

проверьте ваши базы, проверьте содержимое json_data, используйте repr () или pprint.pprint ().

У объектов str и unicode есть методы кодирования и декодирования, которые принимают аргумент ошибок, например: "\x66\x89".decode("utf-8", "replace")

json.dumps кодирует данные в json, странно, что вы передаете их json_output в качестве ввода.

0 голосов
/ 07 февраля 2012

Похоже, что в вашем json_output объекте есть строка, которая не является кодировкой Unicode или Unicode. Проблема не в имени файла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...