js,如何防止特殊字符被转义

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js,如何防止特殊字符被转义相关的知识,希望对你有一定的参考价值。

html放了个<div id="test" style="display: none">$(test)!</div>
$(test)!内容是> 你<是?我&的

然后在js里$("#test“).html();获取内容时发现变为 > 你<是?我&的

特殊字符被转义了

求教 大神,有何办法不让特殊字符转义?

jQuery的.html()方法默认会转义的,这种情况使用.text()就不会转义了。 参考技术A <>属于特殊的HTML标记,一个DOM元素的内容里出现这样的标记,最好自己先转义一下,然后获取值的时候自己再取消转义,这样比较安全。如果不这样的话,万一你的值里面出现一个HTML的结束标记,取值的话可能会被截断,而且会破坏原页面。
或者把这样的值放到一个Hidden的Input里面,这样可能更方便。

url 中的特殊字符 % # & = ? / + 无法被后端解析问题分析及解决方法

参考技术A

场景:项目中存在一个列表,用户可以根据名字对列表进行筛选,此时,如果用户 输入%,需要通过 query 的方式传给后端,此时就会出现: http:// xxxxx?name=% 这样的请求, 这样后端是无法获取到这个 name 的值 %的

原因:% # & = ? / + 对 url 来说属于特殊字符,在 URL 中有特殊含义,如果 不加处理,后端就无法获取到相应的内容

解决方法:如果要传递这些特殊字符给后端,需要对它们进行转义,转化为:%加字符的ASCII码,转化方法也非常简单只需要采用 浏览器中默认提供的方法 encodeURIConponent() 帮我们转义即可
例如:

知识拓展:encodeUrl 与 encodeUrlComponent的区别

……而对于 URL 参数,我们应该改用 encodeURIComponent:

将其与 encodeURI 进行比较:

我们可以看到,encodeURI 没有对 & 进行编码,因为它对于整个 URL 来说是合法的字符。

但是,我们应该编码在搜索参数中的 & 字符,否则,我们将得到 q=Rock&Roll —— 实际上是 q=Rock 加上某个晦涩的参数 Roll 。不符合预期。

因此,对于每个 搜索参数 ,我们应该 使用 encodeURIComponent,以将其正确地插入到 URL 字符串中 。最安全的方式是对 name 和 value 都进行编码,除非我们能够绝对确保它只包含允许的字符。

以上是关于js,如何防止特殊字符被转义的主要内容,如果未能解决你的问题,请参考以下文章

如何让在Html中特殊字符不被转义

如何让在Html中特殊字符不被转义

url 中的特殊字符 % # & = ? / + 无法被后端解析问题分析及解决方法

C# 如何去掉string中所有转义字符(特殊符号)?

JS post表单特殊字符转义问题

html特殊字符必须转义怎么办