返回信息流目的:用Django从后台deamon往前端传过来一字符串,内容是xml,在前端js来解析该xml
xml如下:
<?xml version="1.0" ?><info><safety_score>6.9</safety_score><risk_paths><path type="apk_init_leak"><sink_tags><SinkTag>国际移动装备辨识码</SinkTag></sink_tags><TriggerLevel>2</TriggerLevel><SendType>网络外发</SendType><SendAddr>40</SendAddr><Evidence><?xml version='1.0' encoding='utf-8' standalone='yes' ?>.<map>.<string name="random_device_id">86404]</Evidence><SnapshotImg/></path><path type="apk_init_leak"><sink_tags><SinkTag>国际移动装备辨识码</SinkTag></sink_tags><TriggerLevel>2</TriggerLevel><SendType>网络外发</SendType><SendAddr>40</SendAddr><Evidence><?xml version='1.0' encoding='utf-8' standalone='yes' ?>.<map>.<string name="random_device_id">86404]</Evidence><SnapshotImg/></path></risk_paths><finger_img_small/></info>
js里使用document.getElementById("content").innerHTML="该xml"正常显示该内容
但是alert(该xml)却被转码,所有<、>、'、"被转成<,>"',
估计该字符串就是这个形式的,导致使用new DOMParser().parseFromString(该xml)时出现问题。
现在可以使用replace(/&/g,'&').replace( /</g,'<').replace(/>/g,'>').replace(/"/g,'"').replace(/'/g,"'");来转义编码。
但是就不能保留原始数据里的<等内容了。
还望大神指导!
这是一条镜像帖。来源:北邮人论坛 / python / #1765同步于 2014/7/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
HTML编码问题,Str替换
you
2014/7/22镜像同步12 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
你是用django的模板处理的字符串?试试加上safe
【 在 you (you) 的大作中提到: 】
: 目的:用Django从后台deamon往前端传过来一字符串,内容是xml,在前端js来解析该xml
: xml如下:
: <?xml version="1.0" ?><info><safety_score>6.9</safety_score><risk_paths><path type="apk_init_leak"><sink_tags><SinkTag>国际移动装备辨识码</SinkTag></sink_tags><TriggerLevel>2</TriggerLevel><SendType>网络外发</SendType><SendAddr>40</SendAddr><Evidence
: ...................
用safe确实有效,只是有个奇怪的问题
我的data=“<div>”时,前端alert("{{data|safe}}")正常弹出“<div>”
如是换成data=
<?xml version="1.0" ?><info><safety_score>6.9</safety_score><risk_paths><path type="apk_init_leak"><sink_tags><SinkTag>国际移动装备辨识码</SinkTag></sink_tags><TriggerLevel>2</TriggerLevel><SendType>网络外发</SendType><SendAddr>40</SendAddr><Evidence><?xml version='1.0' encoding='utf-8' standalone='yes' ?>.<map>.<string name="random_device_id">86404]</Evidence><SnapshotImg/></path><path type="apk_init_leak"><sink_tags><SinkTag>国际移动装备辨识码</SinkTag></sink_tags><TriggerLevel>2</TriggerLevel><SendType>网络外发</SendType><SendAddr>40</SendAddr><Evidence><?xml version='1.0' encoding='utf-8' standalone='yes' ?>.<map>.<string name="random_device_id">86404]</Evidence><SnapshotImg/></path></risk_paths><finger_img_small/></info>
时,前端alert("{{data|safe}}")就弹不出来了,@Chon,这是什么原因呢?
【 在 Chon 的大作中提到: 】
: 你是用django的模板处理的字符串?试试加上safe
safe是让后端的django处理的,怎么会对js生效
不要混在一起写
【 在 you (you) 的大作中提到: 】
: 用safe确实有效,只是有个奇怪的问题
: 我的data=“<div>”时,前端alert("{{data|safe}}")正常弹出“<div>”
: 如是换成data=
: ...................
你说safe过滤器是让Django处理的?那么应该写在哪里呢,难道不是在html,js里用{{data|safe}}吗?
我也知道想在后台不让字符串转义直接传到前端,那么请问该如何做呢?有更好的方法?
模板板标签的去除转义我知道有safe过滤,形如{{data|safe}}和 {% autoescape off %}标签关闭转义,都是在前端做的,不知在后台如何关闭转义呢?
还望不吝赐教,thanks~
【 在 Chon 的大作中提到: 】
: safe是让后端的django处理的,怎么会对js生效
: 不要混在一起写
你搞错了,{{data|safe}}和 {% autoescape off %} 全都是后端做的
除非你把 view 也叫前端
【 在 you 的大作中提到: 】
: 你说safe过滤器是让Django处理的?那么应该写在哪里呢,难道不是在html,js里用{{data|safe}}吗?
: 我也知道想在后台不让字符串转义直接传到前端,那么请问该如何做呢?有更好的方法?
: 模板板标签的去除转义我知道有safe过滤,形如{{data|safe}}和 {% autoescape off %}标签关闭转义,都是在前端做的,不知在后台如何关闭转义呢?
: ...................