我从服务器收到了格式为 json 的响应,但是当我在 html 模板中显示重音符号被\xed 更改时。 (django框架)
如果我使用json.dumps
,结果是完美的,但是当我使用json.dumps
时,我无法像字典一样访问模板。
json.dumps(json_received_from_server, ensure_ascii=False)
我想知道,好吧,让我们通过 ast.literal_eval
将 unicode 从 json.dumps
转换为 dict,但它会引发错误(格式错误的字符串)。
我尝试了 json.loads(json_received)
但也不起作用。
如何在我的 django 模板中正确显示这种重音?
谢谢。
最佳答案
在 Django 和 Python 2.7 中处理扩展范围字符时,您应该意识到有两种类型的字符串:unicode 和字节字符串。您应该尝试将字符串保留为 unicode,并让 Django 的模板渲染引擎来处理它的转换。您可以通过 print 来判断您的数据是否为 unicode,字符串值前面会有一个“u”...
# byte strings
print "mañana" # => "mañana"
# unicode strings
print u"mañana" # => u"mañana"
确保你的字符串保持unicode,使用非unicode字符串修改字符串将强制Python进行编码并将其转换为字节字符串。通过确保您的字符串自由主义者以“u”为前缀,避免出现与以下示例类似的情况,如下所示:
"Hello" + u" World" # => "Hello World"
u"Hello" + u" World" # => u"Hello World"
u"Hello %s" % "World" # => "Hello World"
u"Hello %s" % u"World" # => u"Hello World"
因此,请检查有问题的代码,并确保您处理的字符串保持 unicode,使用 print 来验证它们确实保持 unicode。
关于python - python/django 中的重音字符被替换为\xed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27538830/