use*_*593 10 python python-3.x
我有这个代码:
keys_file = open("keys.json")
keys = keys_file.read().encode('utf-8')
keys_json = json.loads(keys)
print(keys_json)
Run Code Online (Sandbox Code Playgroud)
keys.json中有一些非英文字符.但结果我得到:
[{'category': '???±?‚', 'keys': ['?‘?»?µ?????µ?? Philips',
'?????»???‚?????°?????° Polaris']}, {'category': '???‘??', 'keys':
['?…???»???? ???»???????? ?°?‚?»?°???‚', '?????????????????µ?‡???°??
???°?€?????° Bosch']}]
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
dec*_*eze 31
encode表示字符为二进制.读取文件时所需的内容是二进制到字符 → decode.但实际上整个过程太过手动,只需这样做:
with open('keys.json', encoding='utf-8') as fh:
data = json.load(fh)
print(data)
Run Code Online (Sandbox Code Playgroud)
with处理文件的正确打开和关闭,确保使用正确的编码读取文件的encoding参数open,并且load调用直接从文件句柄读取,而不是首先将文件内容的副本存储在内存中.
如果仍然输出无效字符,则表示您的源编码不是UTF-8,或者您的控制台/终端不处理UTF-8.
| 归档时间: |
|
| 查看次数: |
41703 次 |
| 最近记录: |