在使用url进行参数传递时,经常会传递一些中文名的参数或URL地址,在后台处理时会发生转换错误。在有些传递页面使用GB2312,而在接收页面使
用UTF8,这样接收到的参数就可能会与原来发生不一致。使用服务器端的urlEncode函数编码的URL,与使用客户端javascript的
encodeURI函数编码的URL,结果就不一样。
javaScript中的编码方法:
escape() 方法:
采用ISO
Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符
在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20。unescape方法与此相反。不会被此方法编码的字符: @ * / +
英文解释:MSDN JScript Reference: The escape method returns a string
value (in Unicode format) that contains the contents of [the argument].
All spaces, punctuation, accented characters, and any other non-ASCII
characters are replaced with %xx encoding, where xx is equivalent to
the hexadecimal number representing the character. For example, a space
is returned as "%20."
Edge Core Javascript Guide: The escape and unescape functions let
you encode and decode strings. The escape function returns the
hexadecimal encoding of an argument in the ISO Latin character set. The
unescape function returns the ASCII string for the specified
hexadecimal encoding value.
encodeURI() 方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。不会被此方法编码的字符:! @ # $& * ( ) = : / ; ? + '
英文解释:MSDN JScript Reference: The encodeURI method returns an
encoded URI. If you pass the result to decodeURI, the original string
is returned. The encodeURI method does not encode the following
characters: ":", "/", ";", and "?". Use encodeURIComponent to encode
these characters. Edge Core Javascript Guide: Encodes a Uniform
Resource Identifier (URI) by replacing each instance of certain
characters by one, two, or three escape sequences representing the
UTF-8 encoding of the character
encodeURIComponent()
方法:把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如
/ 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 /
字符被编码之后URL将显示错误。不会被此方法编码的字符:! * ( )
英文解释:MSDN JScript Reference: The encodeURIComponent method returns
an encoded URI. If you pass the result to decodeURIComponent, the
original string is returned. Because the encodeURIComponent method
encodes all characters, be careful if the string represents a path such
as /folder1/folder2/default.html. The slash characters will be encoded
and will not be valid if sent as a request to a web server. Use the
encodeURI method if the string contains more than a single URI
component. Mozilla Developer Core Javascript Guide: Encodes a Uniform
Resource Identifier (URI) component by replacing each instance of
certain characters by one, two, or three escape sequences representing
the UTF-8 encoding of the character.
因此,对于中文字符串来说,如果不希望把字符串编码格式转化成UTF-8格式的(比如原页面和目标页面的charset是一致的时候),只需要使
用 escape。如果你的页面是GB2312或者其他的编码,而接受参数的页面是UTF-8编码的,就要采用encodeURI或者
encodeURIComponent。
另外,encodeURI/encodeURIComponent是在javascript1.5之后引进的,escape则在javascript1.0版本就有。
英文注释:The escape() method does not encode the + character which is
interpreted as a space on the server side as well as generated by forms
with spaces in their fields. Due to this shortcoming, you should avoid
use of escape() whenever possible. The best alternative is usually
encodeURIComponent().Use of the encodeURI() method is a bit more
specialized than escape() in that it encodes for URIs [REF] as opposed
to the querystring, which is part of a URL. Use this method when you
need to encode a string to be used for any resource that uses URIs and
needs certain characters to remain un-encoded. Note that this method
does not encode the ' character, as it is a valid character within
URIs.Lastly, the encodeURIComponent() method should be used in most
cases when encoding a single component of a URI. This method will
encode certain chars that would normally be recognized as special chars
for URIs so that many components may be included. Note that this method
does not encode the ' character, as it is a valid character within
URIs.
分享到:
相关推荐
基于网址URL中特殊字符转义编码 目录 网址URL中特殊字符转义编码URL特殊字符转义,URL中一些字符的特殊含义,基本编码规则如下:如果需要在URL中用到,需要将这些特殊字符换成相应的十六进制的值预备知识 为什么...
NULL 博文链接:https://liuzidong.iteye.com/blog/829204
js对文字进行编码涉及3个函数:escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponen
2. encodeURI()是javascript中真正用来对URL编码的函数。编码整个URL地址,但对特殊含义的符号”;/?:@&=+$,#”,也不进行编码。对应的解码函数是decodeURI()。 3. encodeURIComponent()能编码”;/?:@&=+$,#”这些...
javaScript encodeURI中文乱码
Javascript中escape(),_encodeURI()和encodeURIComponent()之精析与比较.doc
escape() 方法:采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格...
易语言JS实现编码转换源码,JS实现编码转换,decodeURI,encodeURI
JavaScript中存在几种对URL字符串进行编码的方法:escape(),encodeURI(),以及encodeURIComponent()。这几种编码所起的作用各不相同。 escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码。所有的空格符...
URL中包含编码的中文的时候,程序获取queryString需要根据url的不同编码,采用不同的解码方式,RequestQueryString方法能够自动识别url是用UTF-8编码还是GB2312编码,从而自动获取争取的值。 应用范例:...
serialize , encodeURIComponent encodeURI 中文转成GBK编码 encodeURIComponent encodeURI 默认转 utf-8 ;重写方法 转成GBK
解决url传递中文乱码问题,解决后台接收到的汉字是乱码的
escape(), encodeURI()和encodeURIComponent()是在Javascript中用于编码字符串的三个常用的方法,而他们之间的异同却困扰了很多的Javascript初学者,这篇文章详细的给大家介绍了js中编码函数:escape,encodeURI与...
JavaScript中有三个可以对字符串编码的函数,分别是: escape,encodeURI,encodeURIComponent,相应3个解码函数: unescape,decodeURI,decodeURIComponent 。 下面简单介绍一下它们的区别 1 escape()函数 定义和...
使用服务器端的urlEncode函数编码的URL,与使用客户端javascript的 encodeURI函数编码的URL,结果就不一样。 javaScript中的编码方法: escape() 方法: 采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、...
NULL 博文链接:https://forhope.iteye.com/blog/1771461