非字母数字字符都将被替换成百分号“%”后跟两位十六数
2021-01-31
URLEncode:指网页URL中汉字的编码转换方法。最常见的方法是在百度和Google等搜索引擎中输入中文查询时生成编码的网页URL。
URLEncode通常有两种方式,一种是传统的基于GB2312的编码(由百度,Yisou等使用),另一种是基于UTF-8的编码(由Google,Yahoo等使用)。 )。
URLdecode:用于将url编码的字符串恢复为未编码的外观。
此工具通过两种方式实现编码和解码:
中文-> GB2312的编码->%D6%D0%CE%C4
中文-> UTF-8编码->%E4%B8%AD%E6%96%87
HTML中的URLEncode:
在编码为GB2312的html文件中:Chinese.rar->浏览器自动转换为->%D6%D0%CE%C4.rar
注意:Firefox不支持GB2312编码的中文URL,因为它默认情况下使用UTF-8发送URL,但是ftp://协议可以。我尝试过php url编码转换,我认为这应该被视为Firefox中的错误。
在编码为UTF-8的html文件中:Chinese.rar->浏览器自动转换为->%E4%B8%AD%E6%96%87.rar
PHP中的URLEncode:
复制代码,代码如下:
1 php 2 //GB2312的Encode 3 echo urlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.+ 4 echo urldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 5 echo rawurlencode("中文-_. ")."\n"; //%D6%D0%CE%C4-_.%20 6 echo rawurldecode("%D6%D0%CE%C4-_. ")."\n"; //中文-_. 7 ?>
除“ -_”外的所有非字母数字字符。将被替换为百分号“%”,后跟两个十六进制数字。
urlencode和rawurlencode之间的区别:urlencode将空格编码为加号“ +”php url编码转换,而rawurlencode将空格编码为加号“%20”。
如果要使用UTF-8编码,有两种方法:
一、将文件另存为UTF-8文件,并直接使用urlencode和rawurlencode。
二、使用mb_convert_encoding函数:
复制代码,代码如下:
1 php 2 $url = 'http://s.jb51.net/中文.rar'; 3 echo urlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 4 echo rawurlencode(mb_convert_encoding($url, 'utf-8', 'gb2312'))."\n"; 5 //http%3A%2F%2Fs.jb51.net%2F%E4%B8%AD%E6%96%87.rar 6 ?>
示例:
复制代码,代码如下:
1 php 2 function parseurl($url="") 3 { 4 $url = rawurlencode(mb_convert_encoding($url, 'gb2312', 'utf-8')); 5 $a = array("%3A", "%2F", "%40"); 6 $b = array(":", "/", "@"); 7 $url = str_replace($a, $b, $url); 8 return $url; 9 } 10 $url="ftp://ud03:password@s.jb51.net/中文/中文.rar"; 11 echo parseurl($url); 12 //ftp://ud03:password@s.jb51.net/%D6%D0%CE%C4/%D6%D0%CE%C4.rar 13 ?>
JavaScript中的URLEncode:
例如:%E4%B8%AD%E6%96%87 -_。%20%E4%B8%AD%E6%96%87 -_。%20
encodeURI不对以下字符进行编码:“:”,“ /”,“;”,“?”,“ @”和其他特殊字符。
例如:%E4%B8%AD%E6%96%87.rarhttp%3A%2F %% 2F%E4%B8%AD%E6%96%87.rar