重音字符由python / django中的\ xed替换

时间:2014-12-18 03:33:36

标签: python json django format diacritics

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

如果我使用json.dumps,结果是完美的,但是当我不能像字典那样访问模板时。

json.dumps(json_received_from_server, ensure_ascii=False) 

我想知道,好吧,让我们将json.dumps的unicode转换为ast.literal_eval的dict,但会引发错误(错误格式字符串)。

我尝试了json.loads(json_received)并且也没有工作。

如何在django模板中正确显示此重音?

THX。

1 个答案:

答案 0 :(得分:2)

在处理Django和Python 2.7中的扩展范围字符时,您应该知道有两种类型的字符串:unicode和字符串。您应该尝试将字符串保持为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。