python - python/django 中的重音字符被替换为\xed

标签 python json django format diacritics

我从服务器收到了格式为 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/

相关文章:

python - 查找与 pandas DataFrame 中的值最接近的第一行的索引

json - 在 Azure 中链接两个 ARM 模板的最佳方法是什么

Python Kivy 如何将用 Python 制作的小部件注入(inject) kv 文件中的布局

java - Android - 错误 java.lang.UnsupportedOperationException : JsonNull

python - 在外部文件中保存 Python 字典?

sql - Django:将自定义原始 SQL 插入与 executemany 和 MySQL 结合使用

带有 ChoiceField 的 Django Rest 框架

python - Django cache.set() 导致重复键错误

python - 如何检测使用 Paramiko invoke_shell 执行的命令是否已完成

python - Altair 图表上方的动态文本