前端常用的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编码方式的主要内容,如果未能解决你的问题,请参考以下文章

后端返回URL含有中文进行编码、解码处理

C#中一些常用的加密和哈希处理

编码解码--url编码解码

url的编码和解码方式

url的编码和解码方式

Web项目中的常用编码