{{=XML(some thing)}} 无法在 html 中用 web2py 解析

{{=XML(some thing)}} can't be parsed in html with web2py

我正在使用 magicsuggest 作为带有 web2py 的 web 应用程序的自动完成插件。我在 model/db.py 中定义了一个列表变量 dt=['张','李']。列表中的元素是中文。但是,当我根据 magicsuggest 手册将变量嵌入到 html 中时 {{=XML(dt)}} 。汉字是乱码。经过几天的搜索,我发现html中的中文字符列表变量被编码为十六进制。我知道 encode/decode 有问题。谁能帮我在 html 中显示正确的汉字?

XML() 是用来获取一个字符串,而不是一个字符串列表。如果你传递给它的不是字符串,它首先会被转换成字符串,所以你的代码等同于 {{=XML(str(dt))}},你会注意到在 Python 中,str(['张','李']) 产生"['\xe5\xbc\xa0', '\xe6\x9d\x8e']".

相反,您可以执行 {{=XML(dt[0])}},您会看到列表中的第一个字符正确显示。

如果你想显示一个用括号括起来的逗号分隔列表,你可以这样做:

{{=json.dumps(dt, encoding="UTF-8", ensure_ascii=False)}}