Kin*_*gFu 3 python django encoding
我试图防止value
POST 请求中的字符串(在本例中为变量)被转义,因为它存储在 JSON 中。我的代码是
def addProduct(request):
if request.POST:
post = {}
for key in request.POST:
value = request.POST[key].encode('utf-8')
try:
value = json.loads(value).encode('utf-8')
except Exception:
pass
post[key] = value.encode('utf-8')
doc = json.dumps(post)
Run Code Online (Sandbox Code Playgroud)
我可以看到的调试value
是 unicode 类型,我相信这就是 Django 处理请求对象的方式。实际的字符串,尽管 unicode 在 之前不会对其特殊字符进行转义post[key] = value
。如果我尝试更改此设置post[key] = value.encode('utf-8')
以防止它被转义,则会收到错误:'ascii' codec can't decode byte 0xe2 in position 38: ordinal not in range(128)
有任何想法吗?
如果您想json.dumps
保留特殊字符,我认为您可能会发现这些参数很有用ensure_ascii=False
。
与其自己动手,我认为会解决转义输出ensure_ascii=False
的问题。json
前任:
json.dumps({'h':u'\xc2\xa3'},ensure_ascii=False)
>>>u'{"h": "\xc2\xa3"}'
Run Code Online (Sandbox Code Playgroud)
更新:json.dumps
有和没有ensure_ascii
unicode字符串的比较:
In [7]: json.dumps({'a':u'\u00a3'},ensure_ascii=False)
Out[7]: u'{"a": "\xa3"}'
In [8]: json.dumps({'a':u'\u00a3'})
Out[8]: '{"a": "\\u00a3"}'
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!
归档时间: |
|
查看次数: |
5723 次 |
最近记录: |