一般来说,URL只能使用英文字母、阿拉伯数字和某些标点符号,不能使用其他文字和符号。
比如,世界上有英文字母的网址"http://www.abc.com",
但是没有希腊字母的网址"http://www.aβγ.com"(读作阿尔法-贝塔-伽玛.com)。
这意味着,如果URL中有汉字,就必须编码后使用。
但是麻烦的是,RFC 1738没有规定具体的编码方法,
而是交给应用程序(浏览器)自己决定。这导致"URL编码"成为了一个混乱的领域。

1、URL编码问题

如任何查看windows系统的编码
进入cmd,输入chcp命令

可以得到活动代码936就标示当前编码是:中国-简体中文(GB2312)

url编码中的情况

例如在postman中输入网址"http://www.tongzhuo100.com/manager/solo/api/common/encode.php?name=%5c&age=a&user=%BA%FA%23"
一、网址路径中包含汉字

输入网址"http://zh.wikipedia.org/wiki/春节"
所以,结论就是,网址路劲的编码,用的是utf-8编码

二、查询字符串中包含汉子
http://www.baidu.com/s?wd=春节

所以,结论就是,查询字符串的编码,用的是操作系统的默认编码。

三、GET或者POST方法生成的URL包含汉子

例如在form表单中,get或者post请求

get和post方法的编码,用的是网页的编码。

四、ajax调用的url包含汉子

五、JavaScript函数:escape()

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

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

javascript:escape('春节');
"%u6625%u8282"

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

所以,”Hello world“的escape编码就是”hello%20world“。因为空格的Unicode的值是20(十六进制)。

首先,无论网页的原始编码是什么,一旦被JavaScript编码,就都变成为Unicod字符。(注意是十六进制的),
JavaScript函数的输入和输出,默认都是Unicode字符,这一点对下面两个函数也适用。

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

它对应的解码函数是decodeURI()。
需要注意的是,它不对单引号'编码。
七、Javascript函数:encodeURIComponent()
最后一个Javascript编码函数是encodeURIComponent()。
与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码。
因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,
在encodeURIComponent()中统统会被编码。至于具体的编码方法,两者是一样。

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

URL编码问题的更多相关文章

  1. url 编码(percentcode 百分号编码)(转载)

    原文地址:http://www.cnblogs.com/leaven/archive/2012/07/12/2588746.html   http://www.imkevinyang.com/2009 ...

  2. 【原】聊一聊 url 编码问题

    最近项目中遇到需要编码的一个问题,在encode和encodeURIComponent上绕了个小圈,所以打算总结一下js的编码问题,网上也有很多类似的文章,不过呢,总结出来的东西才是自己滴 为什么需要 ...

  3. Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办?

    Owin的URL编码怎么搞?以前都是HttpUtility.UrlEncode之类的,现在连system.web都没了,肿么办? 编码: Uri.EscapeDataString(name) 解码: ...

  4. 【基础进阶】URL详解与URL编码

    作为前端,每日与 URL 打交道是必不可少的.但是也许每天只是单纯的用,对其只是一知半解,随着工作的展开,我发现在日常抓包调试,接口调用,浏览器兼容等许多方面,不深入去理解URL与URL编码则会踩到很 ...

  5. 【阮一峰】深入研究URL编码问题及JavaScript相应的解决方案

    作者: 阮一峰 日期: 2010年2月11日 一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上 ...

  6. delphi URL 编码的转换

    先介绍一下,Delphi中处理Google的URL编码解码,其中就会明白URL编码转换的方法的 从delphi的角度看Google(谷歌)URL编码解码方式 在网上搜索了一下,似乎没有什么关于goog ...

  7. sed处理url编码解码=== web日志的url处理

    URL 编码/解码方法(linux  shell实现),方法如下: 1.编码的两种方法: admin@~ 11:14:29>echo '手机' | tr -d '\n' | xxd -plain ...

  8. url编码

    url编码 情况1:网址路径中包含汉字 打开IE,输入网址”http://zh.wikipedia.org/wiki/春节”.注意,”春节”这两个字此时是网址路径的一部分. 查看HTTP请求的头信息, ...

  9. URL编码和解码工具

    开发中发现需要进行URL的编解码,每次百度出来的还带广告而且比较慢,写了一个本地的工具,比较简单,希望对大家有帮助. <!DOCTYPE html PUBLIC "-//W3C//DT ...

  10. URL编码 utf-8 gb2312的区别

    一.问题的由来 URL就是网址,只要上网,就一定会用到. 一般来说,URL只能使用英文字母.阿拉伯数字和某些标点符号,不能使用其他文字和符号.比如,世界上有英文字母的网址“http://www.abc ...

随机推荐

  1. windows系统安装完后要做的事情

    完成之后 1.netplwiz关闭开机输入密码 2.这台电脑右击->属性->高级系统设置->高级->性能设置->高级->虚拟内存: 把C盘设为无分页文件,选择一个大 ...

  2. 如何给Elasticsearch安装中文分词器IK

    安装Elasticsearch安装中文分词器IK的步骤: 1. 停止elasticsearch 2.2的服务 2. 在以下地址下载对应的elasticsearch-analysis-ik插件安装包(版 ...

  3. Forward+ Shading架构

    Forward+ = Tile based Light Culling + Tile based Forward Rendering 整体渲染架构分为如下3大步骤: 1.PrePass将场景的min ...

  4. “RESOURCE MONITOR“CPU占用特别高

    背景: SQL Server 2008 R2 10.50.1600 没有设置页面文件,内存为64G,数据库分配50G cpu使用占了50%以上,平时只有10-20%,某台服务器“RESOURCE MO ...

  5. [C++]QString方法集

    QString s =  "hello world"; s. indexOf ( "o" )); //4 s. lastIndexOf ( "o&qu ...

  6. Linux中Cache内存占用过高解决办法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...

  7. Java知多少(66)输入输出(IO)和流的概述

    输入输出(I/O)是指程序与外部设备或其他计算机进行交互的操作.几乎所有的程序都具有输入与输出操作,如从键盘上读取数据,从本地或网络上的文件读取数据或写入数据等.通过输入和输出操作可以从外界接收信息, ...

  8. HBuilder搭配逍遥Android模拟器进行开发

    1.逍遥模拟器安装 地址: 点我下载 2.连接注意事项 a. 复制adb等文件 HBuilder安装目录中tools文件夹下的三个文件adb.exe,AdbWinApi.dll,AdbWinUsbAp ...

  9. Elasticsearch 学习之携程机票ElasticSearch集群运维驯服记(强烈推荐)

    转自: https://mp.weixin.qq.com/s/wmSTyIGCVhItVNPHcH7nsA 一.整体架构 为什么采用ES作为搜索引擎呢?在做任何事情的时候,不要一上来就急着了解怎么做这 ...

  10. [原]Jenkins(十三)---jenkins用户权限管理

    * 版权声明:本博客欢迎转发,但请保留原作者信息! http://www.cnblogs.com/horizonli/p/5337874.html 两种策略的比较