处理json文件乱码问题
前言
在爬取网页内容是,有的时候会爬取到带有特殊符号的英文名字,如”J. Valančiūnas“,但是在保存json文件的时候,会出现乱码的情况。
下图是我保存的json文件,文件内容出现的乱码
而我爬取的网页中的人名是:“J. Valančiūnas”
接下来解决这个问题!!!
方法
首先尝试写一段代码,模拟以上问题
import json
file = open('test_data.json', mode='w')
d = {}
d['hometeam_name'] = 'yongshi'
d['awayteam_name'] = 'kaierteren'
d['player'] = 'J. Valančiūnas'
d['events'] = []
c = {'a' : 'b'}
f = {'haha':'heihei'}
d['events'].append(c)
d['events'].append(f)
print(d)
json_str = json.dumps(d)
print(json_str)
file.write(json_str)
file.close()
print("json文件写入完成")
输出如下:
{'hometeam_name': 'yongshi', 'awayteam_name': 'kaierteren', 'player': 'J. Valančiūnas', 'events': [{'a': 'b'}, {'haha': 'heihei'}]}
{"hometeam_name": "yongshi", "awayteam_name": "kaierteren", "player": "J. Valan\u010di\u016bnas", "events": [{"a": "b"}, {"haha": "heihei"}]}
json文件写入完成
果然,文件中的也是乱码:
修改代码:
import json
file = open('test_data.json', mode='w', encoding='utf-8')
d = {}
d['hometeam_name'] = 'yongshi'
d['awayteam_name'] = 'kaierteren'
d['player'] = 'J. Valančiūnas'
d['events'] = []
c = {'a' : 'b'}
f = {'haha':'heihei'}
d['events'].append(c)
d['events'].append(f)
print(d)
json_str = json.dumps(d, ensure_ascii=False)
print(json_str)
file.write(json_str)
file.close()
print("json文件写入完成")
输出如下:
{'hometeam_name': 'yongshi', 'awayteam_name': 'kaierteren', 'player': 'J. Valančiūnas', 'events': [{'a': 'b'}, {'haha': 'heihei'}]}
{"hometeam_name": "yongshi", "awayteam_name": "kaierteren", "player": "J. Valančiūnas", "events": [{"a": "b"}, {"haha": "heihei"}]}
json文件写入完成
文件中的内容:
问题解决!!!