JS对URL字符串进行编码解码分析

JS对URL字符串进行编码解码分析,第1张

虽然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文件获取中文参数乱码问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9459020.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存