微软官方MSDN原版Win10系统下载

现在位置: 首页  > 系统教程  > 系统帮助

如何对url进行编码

时间:2024-09-20 20:28:12   

大家好,今天Win10系统之家小编给大家分享「如何对url进行编码」的知识,如果能碰巧解决你现在面临的问题,记得收藏本站或分享给你的好友们哟~,现在开始吧!

开发工具箱 - MD5/SHA1/URL编码JSON/XML系列软件最新版本下载

1.url如何编码解码?为什么要编码?


一般来说,网址只能使用英文字母、阿拉伯数字和一些标点符号,不能使用其他文字和符号,因为网络标准RFC。

1738年制定了一个硬性规定。如果网址中有汉字,就必须编码使用。但问题是,RFC

738中没有规定具体的编码方式,而是由应用程序(浏览器)自行决定,导致了URL编码’的混乱。

导致混乱的四种情况:

该URL包含中文字符。

查询字符串包含中文字符。

Get方法生成的URL包含中文字符。

Ajax调用的URL包含汉字(在Ajax调用中,IE始终采用GB2312编码(操作系统默认编码),而Firefox始终采用utf-8编码)。)

综上所述,此时需要一种编码方法向服务器发送请求,js可以满足这种需求。

德科杜里()

decodeURIComponent()

encodeURI()

encodeURIComponent()

(一般使用encodeURI()和encodeURIComponent())

Encori()是Javascript中真正用于编码URL的函数。它侧重于对整个URL进行编码,所以除了常见的符号之外,URL中还有一些其他具有特殊含义的符号';/? @



2.url的编码和解码方式


url的在线编码和解码工具:


1、基本知识


URLEncode:是指针对网页url中的中文字符的一种编码转化方式,最常见的就是Baidu、 Google等搜索引擎中输入中文查询时候,生成经过 Encode过的网页URL。URLEncode的方式一般有两种一种是传统的基于GB2312的Encode(Baidu、Yisou等使用),一种是 基于UTF-8的Encode(Google,Yahoo等使用)。本工具分别实现两种方式的Encode与Decode。


中文 -> GB2312的Encode ->


中文 -> UTF-8的Encode -> 中文


Html中的URLEncode:


编码为GB2312的html文件中,


中文.rar -> 浏览器自动转换为 -> .rar


注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.


编码为UTF-8的html文件中,


中文.rar -> 浏览器自动转换为 -> 中文.rar


PHP中的URLEncode:


//GB2312的Encode


echo urlencode(“中文-_. “).”n”; // -_.+


echo urldecode(“-_. “).”n”; //中文-_.


echo rawurlencode(“中文-_. “).”n”; // -_.


echo rawurldecode(“-_. “).”n”; //中文-_.


?>


除了 -_. 之外的所有非字母数字字符都将被替换成百分号(%)后跟两位十六进制数。


urlencode和rawurlencode的区别:


urlencode 将空格则编码为加号(+)


rawurlencode 将空格则编码为加号( )


如果要使用UTF-8的Encode,有两种方法:


一、将文件存为UTF-8文件,直接使用urlencode、rawurlencode即可。


二、使用mb_convert_encoding函数。


$url = ‘中文.rar’;


echo urlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”;


echo rawurlencode(mb_convert_encoding($url, ‘utf-8′, ‘gb2312′)).”n”;


//中文.rar


?>


实例:


function parseurl($url=”")


{


$url = rawurlencode(mb_convert_encoding($url, ‘gb2312′, ‘utf-8′));


$a = array(“:”, “/”, “@″);


$b = array(“:”, “/”, “@”);


$url = str_replace($a, $b, $url);


return $url;


}


$url=”ftp://ud03:password@ud03.kinoko.name/中文/中文.rar”;


echo parseurl($url);


//ftp://ud03:password@ud03.kinoko.name//.rar


?>


JavaScript中的URLEncode:


中文-_. 中文-_.


encodeURI 不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。


中文.rar中文.rar

2、示例




1)utf-8解码


&ckn=91142321196129


2)gb2312解码


针吠塑 浈?&ckn=91142321196129



3.JS对URL进行编码和解码


Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起。


实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。比如"春节"的返回结果是%u6625%u8282,也就是说在Unicode字符集中,"春"是第6625个(十六进制)字符,"节"是第8282个(十六进制)字符。


它的具体规则是,除了ASCII字母、数字、标点符号"@ * _ + - . /"以外,对其他所有字符进行编码。在u0000到u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。对应的解码函数是unescape()。


还有两个地方需要注意。


首先,无论网页的原始编码是什么,一旦被Javascript编码,就都变为unicode字符。也就是说,Javascipt函数的输入和输出,默认都是Unicode字符。

这一点对下面两个函数也适用。


其次,escape()不对"+"编码。但是我们知道,网页在提交表单的时候,如果有空格,则会被转化为+字符。服务器处理数据的时候,会把+号处理成空格。所以,使用的时候要小心。


例如:

编码:


解码:


encodeURI()是Javascript中真正用来对URL编码的函数。


它着眼于对整个URL进行编码,因此除了常见的符号以外,对其他一些在网址中有特殊含义的符号"; / ? : @ & = + $ , #",也不进行编码。编码后,它输出符号的utf-8形式,并且在每个字节前加上%。

它对应的解码函数是decodeURI()。


例如:

编码:


解码:


最后一个Javascript编码函数是encodeURIComponent()。与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。


因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。

它对应的解码函数是decodeURIComponent()。


例如:

编码:


解码:


参考文章:

阮一峰:关于URL编码



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


虽然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/default.html,则其中的斜杠也将被

编码,这样,当该字符串作为请求发送到

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编码的方法。。。

编码:Server.UrlEncode(string)

解码:Server.UrlDecode(string)

前面三种客户端编码都可以用这个方法在后台解码。

以上就是关于「如何对url进行编码」的全部内容,本文讲解到这里啦,希望对大家有所帮助。如果你还想了解更多这方面的信息,记得收藏关注本站~

Win10系统之家①独①家使用,转载请注明出处!】

相关文章

  • 如何对url进行编码

    如何对url进行编码

    1.url如何编码解码?为什么要编码?一般来说,网址只能使用英文字母、阿拉伯数字和一些标点符号,不能使用其他文字和符号,因为网络标准RFC。1738年制定了一个硬性规定。如果网址中有汉字,就必须编码使用。但问题是,RFC738中...
  • 如何对b2b平台进行推广

    如何对b2b平台进行推广

    1.怎么有效运用b2b平台进行企业推广(1)一定要发布产品,这样可以起到产品宣传的作用(2)一定要正确选择关键词,不然一切也是白费。注册B2B网站的目的就是为了关键词排名(3)一定要记录统计,特别提示一下,尤其是关于该b2b...
  • 如何对系统进行备份

    如何对系统进行备份

    1.怎么给电脑系统备份?1、硬盘间的复制:有些朋友可能遇到这种情况,比如有两个容量一致的硬盘,其中一个有可以正常运行的操作系统,另一个则为空盘,那么你无需在第二块硬盘上安装WIN98,只需要使用GHOST在很短的时间内就...
  • 如何对数据库进行备份

    如何对数据库进行备份

    1.如何备份sqlserver数据库文件SQLServer本身提供了非常完善的数据库备份功能。用户可以将数据库备份到本地磁盘上的安全位置,以便在需要时快速恢复。备份数据库的步骤如下:1.单击开始所有程序MicrosoftSQLServer企业...