Skip to main content
 首页 » 编程设计

python之在 python/django 中用\xed 替换重音字符

2024年10月25日37JeffreyZhao

我从服务器得到了 json 格式的响应,但是当我在 html 模板中显示时,重音被\xed 更改了。 (django 框架)

如果我使用 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 和 byte 字符串。您应该尝试将您的字符串保留为 unicode,并让 Django 的模板渲染引擎处理它的转换。您可以通过打印判断您的数据是否为 ​​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。