url编码 什么是url编码
老铁们,大家好,相信还有很多朋友对于url编码和什么是url编码的相关问题不太懂,没关系,今天就由我来为大家分享分享url编码以及什么是url编码的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
url的编码和解码方式
url的在线编码和解码工具: http://tool.chinaz.com/tools/urlencode.aspx
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文件中,
http://ud03.kinoko.name/中文.rar->浏览器自动转换为-> http://ud03.kinoko.name/����.rar
注意:Firefox对GB2312的Encode的中文URL支持不好,因为它默认是UTF-8编码发送URL的,但是ftp://协议可以,我试过了.我认为这应该算是Firefox一个bug.
编码为UTF-8的html文件中,
http://ud03.kinoko.name/中文.rar->浏览器自动转换为-> http://ud03.kinoko.name/中文.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=‘http://ud03.kinoko.name/中文.rar’;
echo urlencode(mb_convert_encoding($url,‘utf-8′,‘gb2312′)).”\n”;
echo rawurlencode(mb_convert_encoding($url,‘utf-8′,‘gb2312′)).”\n”;
//http://ud03.kinoko.name/中文.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不对下列字符进行编码:“:”、“/”、“;”、“?”、“@”等特殊字符。
http://ud03.kinoko.name/中文.rarhttp://ud03.kinoko.name/中文.rar
2、示例
http://canvas.gdt.qq.com/canvas/1?viewid=%12%0C%08%E1%98%B7%CD%CB%DC%14%20%E4%A5%01%18%FF%89%18&ckn=91142321196129
1)utf-8解码
http://canvas.gdt.qq.com/canvas/1?viewid=�ᘷ����������&ckn=91142321196129
2)gb2312解码
http://canvas.gdt.qq.com/canvas/1?viewid=�针吠塑�浈��?&ckn=91142321196129
怎么对url连接进行URL 编码
在js中可以使用escape(), encodeURL(), encodeURIComponent(),三种方法都有一些不会被编码的符号:
escape():@*/+
encodeURL():!@#$&*()=:/;?+'
encodeURIComponent():!*()'
在java端可以使用URLDecoder.decode(“中文”,"UTF-8");来进行解码
但是由于使用request.getParameter()来获取参数时已经对编码进行了一次解码,所以一般情况下只要在js中使用
encodeURIComponent("中文");
在java端直接使用request.getParameter()来获取即可返回中文。
如果你想在java端使用URLDecoder.decode(“中文”,"UTF-8");来解码也可以在js中进行二次编码,即:
encodeURIComponent(encodeURIComponent("中文"));
如果不进行二次编码的话,在java端通过decode方法取的会是乱码。
什么是urlencode编码
不是很理解你的意思
从HTTP协议来讲,一个标准的URL是有固定的编码方式的,它只能包含固定的字符集
比如你输入一个网址
http://www.baidu.com/s?wd=我&cl=3,在访问这个网址的时候
网络上传输的时候,‘我’这字会变成%CE%D2这种编码
网站收到你这个网址的时候,再把%CE%D2转换成‘我’字才能理解你这个网址的意思
什么是url编码
",双引号的url编码。
url编码:一种浏览器用来打包表单输入的格式。
浏览器从表单中获取所有的name和其中的值,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。
不管哪种情况,在服务器端的表单输入格式样子象这样:theName=Ichabod+Crane&gender=male&status=missing&;headless=yes。
扩展资料:
URL编码遵循下列规则:
每对name/value由&;符分开;每对来自表单的name/value由=符分开。
如果用户没有输入值给这个name,那么这个name还是出现,只是无值。任何特殊的字符(就是那些不是简单的七位ASCII,如汉字)将以百分符%用十六进制编码,当然也包括=,&;,和%这些特殊的字符。
其实url编码就是一个字符ascii码的十六进制。不过稍微有些变动,需要在前面加上“%”。
比如“\”,它的ascii码是92,92的十六进制是5c,所以“\”的url编码就是%5c。
URL中使用中文等非ASCII的字符造成服务器后台程序解析出现乱码的问题:
常见出错部分:
Query String中的参数值;
servlet path。
常见出错原因:
浏览器:客户端(浏览器)本身并没有遵循URI编码的规范。
Servlet服务器:Servlet服务器的没有正确配置。
开发人员并不了解Servlet的规范和API的含义。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!