我有一个具有常规文本字段的模型,它需要能够接受用户粘贴的文本数据,其中可能包含科学符号,特别是小写的 delta δ
。用户将通过模型管理员输入数据。
我使用的是 mysql 后端,编码设置为 Latin-1。更改数据库编码对我来说不是一个选项。
为了简单起见,我想做的是让管理表单删除输入文本,就像清理或验证一样,但要将诸如 δ
之类的字符转义为它们的 HTML 表示形式,这样我就可以将它们存储在数据库中,而不必转换为 Unicode 然后再转换回来。
有哪些实用程序可用于执行此操作?我查看了 escape()
和 conditional_escape()
,但它们似乎没有按照我的意愿执行(不转义特殊字符)和 django.utils.encoding.force_text()
将对所有内容进行编码,但如果我这样做,我的数据将呈现为其 Unicode 表示形式。
该站点在 django 1.10 和 python 2.7.x 上运行
非常感谢任何帮助或想法。
最佳答案
作为接收 request.POST 数据的保存方法或 View 的一部分,您可以将其转义,使用 xmlcharrefreplace 将其编码为 ascii,然后将其从字节解码回字符串:
raw_str = "this is a string with δ problematic chars"
result = html.escape(raw_str).encode("ascii", "xmlcharrefreplace").decode()
print(result) # 'this is a string with δ problematic chars'
完成工作,因为您无法更改编码,尽管不如使用 UTF-8 那样干净。祝你好运!
关于python - 如何将 django admin 中输入的符号转义为 html 表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48532369/