js 转义字符及URI编码详解

 更新时间:2017年02月28日 14:08:28   作者:开发之路  
本文主要介绍了转义字符及URI编码的相关知识,具有很好的参考价值,下面跟着小编一起来看下吧

URL中的转义字符

当URL的参数中出现诸如+,空格,/,?,%,#,&,=等特殊字符串符号时,因为上述字符有特殊含义,导致服务器端无法正确解析参数,如何处理?解决办法:将这些字符转化成服务器可以识别的字符。

如果要在URL中传递特殊符号的原本意义,要对他们进行编码。编码的格式为:%加字符的ASCII码(16进制),例如空格的编码值是"%20"。

URL中特殊符号的用途及普通意义的编码

+

URL 中+号表示空格

%2B

空格

URL中的空格可以用+号或者编码

%20

/

分隔目录和子目录

%2F

?

分隔实际的URL和参数

%3F

%

指定特殊字符

%25

#

表示书签

%23

&

URL 中指定的参数间的分隔符

%26

=

URL 中指定参数的值

%3D

HTML中的转义字符

转义字符串(Escape Sequence)也称字符实体(Character Entity)。在HTML中,“<”和“>”符号用来表示HTML标签,不能当作普通的符号来使用。如果要在HTML文档中使用这些特殊符号原有的意义,就需要定义对应的转义字符串。当浏览器遇到这类转义字符时就会解释为真实的字符而不是特殊用途。另外有些字符在ASCII字符集中没有文字代号,只能用转义字符串来表示,如回车换行符,退格键等。

字符

十进制

转义字符

"

&#34;

&quot;

&

&#38;

&amp;

&#60;

&lt;

&#62;

&gt;

不断开空格(non-breaking space)

&#160;

&nbsp;

JavaScript中的转义

JavaScript 中有些字符有特殊用途,如果字符串中想使用这些字符原来的含义,需要使用反斜杠对这些特殊符号进行转义。

正则中也有需要转义的字符:* . ? + $ ^ [ ] ( ) { } | \ /,也是通过\反斜杠进行转义。但是中括号里并不是元字符,不需要转义。

在js中字符串形式的正则表达式匹配一个反斜杠要用四个反斜杠'\\\\', 第一个斜杠是js字符串的转义符,第二个斜杠是斜杠本身,第三个斜杠是js字符串的转义符,第四个斜杠是斜杠本身。将第二、四个反斜杠转为正则中的斜杠后,前面一个为正则中的转义符,将后者变为普通符号。字符串形式的正则表达式里的斜杠也是特殊符号,若要当普通符号使用,也需要转义,用“\\”标示。因为js中反斜扛为特殊符号(转义字符),js字符串里面表示斜杠需要一次转义:“\\”。

在比如:字面量形式/\{.*\}/---->字符串形式'\\{.*\\}'。因为{号为正则中的特殊符号,需要加\转义,而字符串中的\又是js中的特殊符号,需要再加一个\进行转义。

注意正则的字面量形式只需要对正则中的特殊符号转义,不需要对js的特殊符号转义。

代码

输出的普通字符

\'

单引号

\"

双引号

\&

和号

\\

反斜杠

\n

换行符

\r

回车符

\t

制表符

\b

退格符

\f

换页符

js中对字符串进行编码的方法

1.encodeURI()把字符串作为 URI整体进行编码,所以URI组件中的特殊分隔符号(;/:@&=+$?#),encodeURI() 函数不会进行转义。该方法不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

  encodeURI("http://www.w3school.com.cn")

  输出http://www.w3school.com.cn

2.encodeURIComponent()把字符串作为 URI 组件的一部分(如path/query/fragment等)进行编码,所以用于分隔 URI 各个部分的特殊分隔符号(;/?:@&=+$,#)也会被转义。返回值中某些字符将被十六进制的转义序列替换。该方法也不会对 ASCII 字母和数字进行编码,也不会对这些 ASCII 标点符号进行编码: - _ . ! ~ * ' ( )

  encodeURIComponent("http://www.w3school.com.cn")

  输出http%3A%2F%2Fwww.w3school.com.cn

3.decodeURI()/decodeURIComponent()解码URI中被转义的字符

  decodeURIComponent(%E4%BD%A0%E5%A5%BDjavascript);

  输出你好javascript

4.escape()用于对字符串进行编码,并返回编码字符串。但目前已不推荐使用该函数对URI进行编码。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • Bootstrap缩略图与警告框学习使用

    Bootstrap缩略图与警告框学习使用

    这篇文章主要为大家详细介绍了Bootstrap缩略图与警告框学习使用的相关资料,希望通过这篇文章和大家更多的去学习Bootstrap缩略图与警告框,从中得到收获
    2017-02-02
  • JavaScript实现搜索的数据显示

    JavaScript实现搜索的数据显示

    这篇文章主要为大家详细介绍了JavaScript实现搜索的数据显示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • 你有必要知道的25个JavaScript面试题

    你有必要知道的25个JavaScript面试题

    这篇文章主要为大家分享了我们有必要知道的25个JavaScript面试题。想要顺利通过面试的朋友可以参考一下
    2015-12-12
  • 两种方法实现在HTML页面加载完毕后运行某个js

    两种方法实现在HTML页面加载完毕后运行某个js

    这篇文章主要介绍了通过两种方法实现在HTML页面加载完毕后运行某个js,需要的朋友可以参考下
    2014-06-06
  • js脚本实现数据去重

    js脚本实现数据去重

    最近在一个项目中,需要去除掉重复的数据,之前都是在后台实现,现在客户需求是在前台去重,于是就想到了javascript脚本。
    2014-11-11
  • KnockoutJS 3.X API 第四章之数据控制流with绑定

    KnockoutJS 3.X API 第四章之数据控制流with绑定

    这篇文章主要介绍了KnockoutJS 3.X API 第四章之数据控制流with绑定的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-10-10
  • js实现文本框中焦点在最后位置

    js实现文本框中焦点在最后位置

    本篇文章主要是对js实现文本框中焦点在最后位置的示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所 帮助
    2014-03-03
  • Webpack打包详细流程及代码

    Webpack打包详细流程及代码

    这篇文章主要给大家介绍了关于Webpack打包详细流程及代码的相关资料,Webpack是一款非常流行的打包工具,它的主要作用是将项目中的各个模块打包成静态资源,以便于在浏览器中加载和运行,需要的朋友可以参考下
    2024-01-01
  • 深入理解 webpack 文件打包机制(小结)

    深入理解 webpack 文件打包机制(小结)

    这篇文章主要介绍了深入理解 webpack 文件打包机制(小结),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01
  • JavaScript实现div的鼠标拖拽效果

    JavaScript实现div的鼠标拖拽效果

    这篇文章主要为大家详细介绍了JavaScript实现div的鼠标拖拽效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11

最新评论