在这篇文章中,我们将为您详细介绍encodeURI和uncodeURIComponent的介绍的内容,并且讨论关于encodeuri与encodeuricomponent的相关问题。此外,我们还会涉及
在这篇文章中,我们将为您详细介绍encodeURI和uncodeURIComponent的介绍的内容,并且讨论关于encodeuri与encodeuricomponent的相关问题。此外,我们还会涉及一些关于encodedURIComponent、decodeURIComponent 、encodeURI、 decodeURI、encodeURI , encodeURIComponent , decodeURL , decodeURIComponent 转码与解码总结、encodeURIComponent或者encodeURI 不用行不行?、encodeURI、encodeURIComponent的知识,以帮助您更全面地了解这个主题。
本文目录一览:- encodeURI和uncodeURIComponent的介绍(encodeuri与encodeuricomponent)
- encodedURIComponent、decodeURIComponent 、encodeURI、 decodeURI
- encodeURI , encodeURIComponent , decodeURL , decodeURIComponent 转码与解码总结
- encodeURIComponent或者encodeURI 不用行不行?
- encodeURI、encodeURIComponent
encodeURI和uncodeURIComponent的介绍(encodeuri与encodeuricomponent)
encodeURI、decodeURI
encodeURI、decodeURI 对字符转义;不替换特殊字符有18个、(大小写)字母、数字。
替换目标
将字符替换为 HTML URL编码
替换范围
A-Z a-z 0-9 - _ . ! ~ * '' ( ) / ? : @ & = + $ # 不替换,其他都替换。
encodeURI("ABC abc 123") //ABC%20abc%20123
decodeURI("ABC%20abc%20123") //ABC abc 123
encodeURIComponent、decodeURIComponent:
对特殊字符转码,
替换范围: A-Z a-z 0-9 - _ . ! ~ * '' ( ) 不替换,其他都替换。
var set1 = ";,/?:@&=+$";
var set2 = "-_.!~*''()";
var set3 = "#";
var set4 = "ABC abc 123";
console.log(encodeURIComponent(set1)); //%3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodeURIComponent(set2)); // -_.!~*''()
console.log(encodeURIComponent(set3)); // %23
console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
encodeURIComponent和encodeURI的区别
范围区别:encodeURIComponent的替换字符 > encodeURI的替换字符
1.encodeURIComponent会替换: / ? : @ & = + $ #
2.encdoeURI不会替换: / ? : @ & = + $ #
var set1 = ";,/?:@&=+$"; // Reserved Characters
var set2 = "-_.!~*''()"; // Unescaped Characters
var set3 = "#"; // Number Sign
var set4 = "ABC abc 123"; // Alphanumeric Characters + Space
console.log(encodeURI(set1)); // ;,/?:@&=+$
console.log(encodeURI(set2)); // -_.!~*''()
console.log(encodeURI(set3)); // #
console.log(encodeURI(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
console.log(encodeURIComponent(set2)); // -_.!~*''()
console.log(encodeURIComponent(set3)); // %23
console.log(encodeURIComponent(set4)); // ABC%20abc%20123 (the space gets encoded as %20)
encodedURIComponent、decodeURIComponent 、encodeURI、 decodeURI
encodedURIComponent(uriComponent: string | number | boolean)
将utf-8字符串转换成字符的实例
规则:
以下字符不会被转义
字母 数字-
_
.
!
~
*
''
(
)
譬如:
encodeURIComponent(''='') // %3D
encodeURIComponent(''?'') // %3F
避免服务器收到意外的请求,最好使用encodedURIComponent进行编码
encodeURI(uri: string)
将特定字符的每个实例转换成转义序列进行uri编码
返回:新的uri
规则:
以下字符不会被转义
;
,
/
?
:
@
&
=
+
$
字母 数字-
_
.
!
~
*
''
(
)
#
不适用于XMLHTTPRequests,因为&和=不会被转义,但是 GET 和 POST 请求属于特殊符号。但是encodedURIComponent会对这些字符编码。
decodeURIComponent
decodeURIComponent(encodedURIComponent: string)
解码
decodeURI
decodeURI(encodedURI: string)
解码
encodeURI , encodeURIComponent , decodeURL , decodeURIComponent 转码与解码总结

encodeURIComponent或者encodeURI 不用行不行?
调研条件
- 客户端:qq浏览器、firfox、chrome
-
测试用例
- url中path带汉字
- url中query带汉字
- 页面中get请求或者post请求
- 页面中meta元数据 charset="utf-8" 或者 charset="gb2312"
调研结果(ps: 比较片面,受浏览器种类和版本影响,结果可能不同,结果不代表绝对性,只是利用有效条件)
qq浏览器行为和chrome行为一致,会对中文进行编码,firfox不会
encodeURI和encodeURIComponent的重要性
因为各个浏览器的行为不一致,所以给开发人员带来困惑,需要一种通用的方法来避免掉多种适配的麻烦。所以encdoeURI和encodeURIComponent这两个标准就出现了,encodeURI现在已经用的少了,基本都用encodeURIComponent
encodeURI vs encodeURIComponent
不同点
encodeURI: 除掉特定字符不编码外(包括浏览器访问url里面的预留符号和其
他得一些符号), 这些不编码的符号是: A-Z a-z 0-9 ; , / ? : @ & = + $ - _ . ! ~ * '' ( ),其他字符都要编码
encodeURIComponent: 除特定字符编码外,其他字符都编
码(包括浏览器url里面的预留字符),这些不编码的符号是:A-Z a-z 0-9 - _ . ! ~ * '' ( )
相同点
都是采用的utf-8编码
例子
var test = ''http://www.test.com/例子''
encodeURI(test) //结果:"http://www.test.com/%E4%BE%8B%E5%AD%90"
encodeURIComponent(test) //结果: "http%3A%2F%2Fwww.test.com%2F%E4%BE%8B%E5%AD%90"
encodeURI、encodeURIComponent
encodeURI是对整个uri进行编码的,而encodeURIComponent是对uri中部分内容进行编码。
在进行url的字符串拼接时,需要进行两次encodeURI。
只进行一次encodeURI,服务器在进行request.getParameter()时会自动进行一次解码,而这个解码字符集可能使用的是操作系统默认字符集。
如果进行两次encodeURI,在服务器端,首先通过request.getParameter()自动进行第一次解码(可能是gb2312,gbk,utf-8,iso-8859-1等字符集,对结果无影响)得到ascii字符,然后再使用UTF-8进行第二次解码,通常使用java.net.URLDecoder("","UTF-8")方法。
两次编码两次解码的过程为:
UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码,编码和解码的过程是对称的,所以不会出现乱码。
encodeURL函数主要是来对URI来做转码,它默认是采用的UTF-8的编码.
UTF-8编码的格式:一个汉字来三个字节构成,每一个字节会转换成16进制的编码,同时添加上%号
我们今天的关于encodeURI和uncodeURIComponent的介绍和encodeuri与encodeuricomponent的分享就到这里,谢谢您的阅读,如果想了解更多关于encodedURIComponent、decodeURIComponent 、encodeURI、 decodeURI、encodeURI , encodeURIComponent , decodeURL , decodeURIComponent 转码与解码总结、encodeURIComponent或者encodeURI 不用行不行?、encodeURI、encodeURIComponent的相关信息,可以在本站进行搜索。
本文标签: