tka*_*ara 5 encoding python-3.x
如果之前已经提出过这个问题我会道歉.我还不清楚python3.2中的编码.
我正在阅读一个csv(用UTF-8编码,没有BOM),我在csv中有法语口音.
这是打开和读取csv文件的代码:
csvfile = open(in_file, 'r', encoding='utf-8')
fieldnames = ("id","locale","message")
reader = csv.DictReader(csvfile,fieldnames,escapechar="\\")
for row in reader:
if row['id'] == id and row['locale'] == locale:
out = row['message'];
Run Code Online (Sandbox Code Playgroud)
我正在以Json的身份返回消息(out)
jsonout = json.dumps(out, ensure_ascii=True)
return HttpResponse(jsonout,content_type="application/json; encoding=utf-8")
Run Code Online (Sandbox Code Playgroud)
但是,当我预览结果时,我会将重音e(法语)替换为\ u00e9.
你能告诉我我做错了什么,我应该怎么做,以便json输出显示带有重音的正确e.
谢谢
mar*_*elm 13
你没有做错任何事(也不是Python).
Python的json模块只是采用安全路由并转义非ascii字符.这是在json中表示此类字符的有效方法,并且任何符合标准的解析器在解析字符串时都将恢复正确的Unicode字符:
>>> import json
>>> json.dumps({'Crêpes': 5})
'{"Cr\\u00eapes": 5}'
>>> json.loads('{"Cr\\u00eapes": 5}')
{'Crêpes': 5}
Run Code Online (Sandbox Code Playgroud)
不要忘记,JSON是您的数据只是一种表象,两者"ê"
并"\\u00ea"
是字符串的有效的JSON表示ê
.符合json解析器应该正确处理.
但是可以禁用此行为,请参阅json.dump
文档:
>>> json.dumps({'Crêpes': 5}, ensure_ascii=False)
'{"Crêpes": 5}'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5551 次 |
最近记录: |