使用JSON的Unicode错误

时间:2012-02-06 12:56:17

标签: python json unicode

我知道发布了类似的问题,但我认为我遇到的问题与他们相比略有不同。请多多包涵;我4个月前才开始使用Python,我确信我的不成熟表现了!

我正在编写一个程序,使用树形图中的Protovis插件显示CSV文件中的LinkedIn数据。据我所见,该插件设置正确,这完全基于O' Reilly的挖掘社交网络。但是,当我在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 个答案:

答案 0 :(得分:2)

检查你的基础,验证json_data的内容,使用repr()或pprint.pprint()。

str和unicode对象具有接受errors参数的编码和解码方法,如下所示:"\x66\x89".decode("utf-8", "replace")

json.dumps将数据编码为json,将json_output作为输入传递给它是很奇怪的。

答案 1 :(得分:0)

听起来你的json_output对象中有一个字符串,它不是unicode或unicode-encodable。这不是文件名的问题。