-
确保你设置的默认编码为
utf-8
# -*- coding: utf-8 -*-
此方式是告诉 python 默认编码不再是 ascii ,而是要使用声明的编码格式。
-
选择使用以下方法:
(1) 使用json.loads
方法 (python3)import json str1 = {'str1_name': 'Ku\u015fadas\u0131'} print(json.loads(f'"{str1}"')) # {'str1_name': 'Kuşadası'} str2 = {'str2_name': '1975\u201376 NBA season'} print(json.loads(f'"{str2}"')) # {'str2_name': '1975–76 NBA season'}
(2) 在
json.dumps
中设置ensure_ascii=False
(python2,python3)import json str1 = {'str1_name': 'Ku\u015fadas\u0131'} str1_a = json.dumps(str1) str1_b = json.dumps(str1, ensure_ascii=False) str2 = {'str2_name': '1975\u201376 NBA season'} str2_a = json.dumps(str2) str2_b = json.dumps(str2, ensure_ascii=False) print(str1_a) # {"str1_name": "Ku\u015fadas\u0131"} print(str1_b) # {"str1_name": "Kuşadası"} print(str2_a) # {"str2_name": "1975\u201376 NBA season"} print(str2_b) # {"str2_name": "1975–76 NBA season"}
(3) 使用
codecs
模块来处理输入输出 unicode 对象 (python2)
codecs
模块可以自动的完成解编码的工作。import codecs error_doc_hits = 'error_doc_hits.json' error_doc_hits = codecs.open(error_doc_hits, 'w', 'utf-8') error_doc_hits.write(json.dumps({'best_pred': best_pred, 'answers': ans, 'seeds': seeds, 'question': line_doc['question']}, ensure_ascii=False) + '\n') error_doc_hits.close()
参考:
https://zhuanlan.zhihu.com/p/37504880
https://www.cnblogs.com/huchong/p/9037142.html