前端常用的url编码方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端常用的url编码方式相关的知识,希望对你有一定的参考价值。
参考技术A一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。比如,世界上有英文字母的网址" http://www.abc.com ",但是没有希腊字母的网址" http://www.a βγ.com"(读作阿尔法-贝塔-伽玛.com)。这是因为网络标准RFC 1738做了硬性规定(只有字母和数字[0-9a-zA-Z]、一些特殊符号"$-_.+!*\'(),"[不包括双引号]、以及某些保留字,才可以不经过编码直接用于URL。)
这意味着,如果URL中有汉字或者其他特殊字符,就必须编码后使用。但是麻烦的是,RFC 1738没有规定具体的编码方法,而是交给浏览器自己决定。这导致不同浏览器对特殊字符的编码方式不同。
举个例子:
我在谷歌浏览器输入 http://www.baidu.com?a=测试 ,可以发现查询字符串, 测试 已经被编码成 %E6%B5%8B%E8%AF%95
参考 阮一峰老师文章关于URL编码 ,里面介绍使用ie8会出现编码结果不同,由于我的电脑没有ie8,所以没法测试。不过我试了360、搜狗,和谷歌测试的结果一样。
而火狐直接显示的是中文:
上面只是统一操作系统的浏览器,如果不同操作系统等,肯定会出现其他编码方式。所以我们在使用url的时候需要一个统一的编码方式(即使用javascript先对URL编码,不用浏览器自己来编码。因为Javascript的输出总是一致的,服务器获取查询参数等数据,再用对应的解码函数进行解码)
Javascript语言用于编码的函数,一共有三个,最古老的一个就是escape()。虽然这个函数现在已经不提倡使用了,但是由于历史原因,很多地方还在使用它,所以有必要先从它讲起。
1. escape() / unescape()
规则:除了ASCII字母、数字、标点符号"@ * _ + - . /"以外,对其他所有字符进行编码(注:空格会被转化为+字符)
注:
2. encodeURI() / decodeURI()
3.encodeURIComponent() / decodeURIComponent
阮一峰老师文章关于URL编码
简单明了区分escape、encodeURI和encodeURIComponent
C#中一些常用的加密和哈希处理
URL编码,默认UTF8编码方式
/// <summary> /// URL编码,默认UTF8编码方式 /// </summary> /// <param name="_SourceString"></param> /// <returns></returns> public static String URLEncoding_UTF8(this String _SourceString) { return System.Web.HttpUtility.UrlEncode(_SourceString, System.Text.Encoding.UTF8); }
URL编码,默认UTF8编码方式
转载请注明出处,欢迎邮件交流:[email protected]
以上是关于前端常用的url编码方式的主要内容,如果未能解决你的问题,请参考以下文章