虽然escape()、encodeURI()、encodeURIComponent()三种方法都能对一些影响URL完整性的特殊
字符进行过滤。但后两者是将字符串转换为UTF-8的方式来传输,解决了页面编码不一至导致的乱码问
题。例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是
UTF-8),使用escape()转换传输中文字串就会出现乱码问题。
以下是JS下对URL进行编/解码的各种方法:
escape
方法:返回一个可在所有计算机上读取的编码
String
对象。
function
escape(charString
:
String)
:
String
不会被此方法编码的字符:
@
/
+
说明:escape
方法返回一个包含
charstring
内容的字符串值(Unicode
格式)。所有空格、标点、
重音符号以及任何其他非
ASCII
字符都用
%xx
编码替换,其中
xx
等于表示该字符的十六进制数。
例如,空格返回为“%20”。(字符值大于
255
的字符以
%uxxxx
格式存储。)
注意:escape
方法不能用来对“统一资源标识符”(URI)
进行编码。对其编码应使用
encodeURI
和
encodeURIComponent
方法。
encodeURI
方法:返回编码为有效的统一资源标识符
(URI)
的字符串。
function
encodeURI(URIString
:
String)
:
String
不会被此方法编码的字符:!
@
#
$
&
(
)
=
:
/
;
+
'
说明:encodeURI
方法返回一个已编码的
URI。如果将编码结果传递给
decodeURI,则将返回初始的
字符串。encodeURI
不对下列字符进行编码:“:”、“/”、“;”和“”。请使用
encodeURIComponent
对这些字符进行编码。
encodeURIComponent
方法:返回编码为统一资源标识符
(URI)
的有效组件的字符串。
function
encodeURIComponent(encodedURIString
:
String)
:
String
不会被此方法编码的字符:!
(
)
'
说明:encodeURIComponent
方法返回一个已编码的
URI。如果将编码结果传递给
decodeURIComponent,则将返回初始的字符串。因为
encodeURIComponent
方法将对所有字符编码,
请注意,如果该字符串代表一个路径,例如
/folder1/folder2/defaulthtml,则其中的斜杠也将被
编码,这样,当该字符串作为请求发送到
Web
服务器时它将是无效的。如果字符串中包含多个
URI
组件,请使用
encodeURI
方法进行编码。
unescape
方法:从用
escape
方法编码的
String
对象中返回已解码的字符串。
function
unescape(charString
:
String)
:
String
说明:unescape
方法返回一个包含
charstring
内容的字符串值。所有以
%xx
十六进制形式编码的
字符都用
ASCII
字符集当中等效的字符代替。(以
%uxxxx
格式(Unicode
字符)编码的字符用十六
进制编码
xxxx
的
Unicode
字符代替。)
注意:unescape
方法不应用于解码“统一资源标识符”(URI)。请改用
decodeURI
和
decodeURIComponent
方法。
decodeURI
方法:返回一个已编码的统一资源标识符
(URI)
的非编码形式。
function
decodeURI(URIstring
:
String)
:
String
decodeURIComponent
方法:返回统一资源标识符
(URI)
的一个已编码组件的非编码形式。
function
decodeURIComponent(encodedURIString
:
String)
:
String
BTW:C#中对URL编码的方法。。。
编码:ServerUrlEncode(string)
解码:ServerUrlDecode(string)
前面三种客户端编码都可以用这个方法在后台解码。
URL编码中文乱码问题的解决办法:
JS代码中使用encodeURIComponent()函数
将URL进行编码
例如:
encodeURIComponent("百度")
得到"%E7%99%BE%E5%BA%A6"
然后处理时,使用解码函数:
decodeURIComponent()
例如:
decodeURIComponent("%E7%99%BE%E5%BA%A6")
得到"百度"
%25%37%DD 。。。上述形式不是乱码。
这是urlencoding。
你可以使用js内置的方法
encodeURIComponent进行编码,
而使用decodeURIComponent把上述形式再解码为普通字符
===================================================
javaScript 处理中文参数乱码
encodeURIComponent(txt)方法。
试试将url修改为:
url=<%=basePath %>printdomethod=print&pbrid=" + encodeURIComponent(pbrid);
希望对你有用~~~
===================================================
用的tomcat吗?试试:tomcat目录下conf\serverxml文件中对应位置加上URIEncoding="UTF-8"这句。
<Connector port="8080" protocol=">
以上就是关于JS对URL字符串进行编码/解码分析全部的内容,包括:JS对URL字符串进行编码/解码分析、url编码中文乱码问题怎么解决、谷歌火狐浏览器中,JS文件获取中文参数乱码问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)