【发布时间】:2011-02-25 14:19:52
【问题描述】:
在windows上,我有以下问题:
>>> string = "Don´t Forget To Breathe"
>>> import json,os,codecs
>>> f = codecs.open("C:\\temp.txt","w","UTF-8")
>>> json.dump(string,f)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python26\lib\json\__init__.py", line 180, in dump
for chunk in iterable:
File "C:\Python26\lib\json\encoder.py", line 294, in _iterencode
yield encoder(o)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 3-5: invalid data
(注意字符串中的非 ascii 撇号。)
但是,我的朋友在他的 mac(也使用 python2.6)上可以轻而易举地运行:
> string = "Don´t Forget To Breathe"
> import json,os,codecs
> f = codecs.open("/tmp/temp.txt","w","UTF-8")
> json.dump(string,f)
> f.close(); open('/tmp/temp.txt').read()
'"Don\\u00b4t Forget To Breathe"'
这是为什么?我也尝试过将 UTF-16 和 UTF-32 与 json 和编解码器一起使用,但无济于事。
【问题讨论】:
标签: python json serialization unicode