[英]getting a UnicodeEncodeError when trying to write a JSON file
Given input file with content: 给定内容的输入文件:
{ "symbol": "°C" }
And this code: 这段代码:
import sys
import json
with open(sys.argv[1], 'r') as ifile, open(sys.argv[2], 'w') as ofile:
json.dump(json.load(ifile), ofile, indent=4, ensure_ascii=False)
I get an error: 我收到一个错误:
$ python2.7 play.py input.json output.json
Traceback (most recent call last):
File "play.py", line 5, in <module>
json.dump(json.load(ifile), ofile, indent=4, ensure_ascii=False)
File "/usr/lib/python2.7/json/__init__.py", line 190, in dump
fp.write(chunk)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xb0' in position 1: ordinal not in range(128)
But Python 3 works fine: 但Python 3工作正常:
$ python3.3 play.py input.json output.json
$ cat output.json
{
"symbol": "°C"
}
You can use the codecs
module to deal with it by declaring the encoding of the file: 您可以使用
codecs
模块通过声明文件的编码来处理它:
import sys
import json
import codecs
with codecs.open(sys.argv[1], 'r', 'utf-8') as ifile, codecs.open(sys.argv[2], 'w', 'utf-8') as ofile:
json.dump(json.load(ifile), ofile, indent=4, ensure_ascii=False)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.