在开发中经常需要对用户输入的数据进行编码然后才能通过HTTP请求发送给后台,或者对传递过来的数据进行解码。在JS中原生提供了三种编码/解码方式,分别是 encodeURI、 encodeURIComponent和 escape。

为什么URL需要编码?
URI设计要求可移植,其中包括安全传输、方便阅读、完整性。

安全传输:不能在传递过程中有些信息被过滤掉
方便阅读:不能有空白字符
完整性:不能有的字符表示不了内容,例如中文

结合考虑URL使用ASCII字符集,而这个字符集是有限的,怎么表示无限的字符呢?并且ASCII中还有些被URL保留,例如#、&、?、/等。

这时候就需要编码,编码规则是使用使用%加上两个表示字符ASCII码的16进制数。

例如:

~ 对应 126 对应 0x7E 对应 %7E
空格 对应 32 对应 0x20 对应 %20

并且我们知道ASCII是用一个字节表示的一个可以表示256个字符,2的8次方,一个8bit。

但是汉字这显然是不够的,有的时候需要3个字节来表示所以encodeURIComponent('中')就变成了%E4%B8%AD

encodeURI
该方法不会对ASCII表中的字母和数字编码,同时也不会对ASCII中的标点符号编码 -_.~*’() 在URI中具有特殊含义的符号 **;/?

JS中编码的三种方法相关推荐

  1. JS截取字符串的三种方法详解

    本文详细讲解了JS截取字符串的三种方法,文中通过示例代码介绍的非常详细.对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下 JS提供三个截取字符串的方法,分别是:slice(),subst ...

  2. JS数组添加元素的三种方法

    JS数组添加元素的三种方法 1.push() 方法可以向数组末尾添加一个或多个元素,并且返回新的长度 语法:arr.push(element1,element2,element3,····) 参数 概 ...

  3. PHP中删除目录的三种方法

    原文链接:http://www.chinaz.com/program/2008/1022/41645.shtml PHP中删除目录的三种方法 1.递规法:利用递归一层一层的删. deleteDir($ ...

  4. OpenCV精进之路(零):访问图像中像素的三种方法

    访问像素的三种方法 指针访问:最快 迭代器iterator:较慢,非常安全,指针访问可能出现越界问题 动态地址计算:更慢,通过at()实现.适用于访问具体某个第i行,j列的像素,而不适用遍历像素 这里 ...

  5. 在MATLAB中生成矩阵的三种方法

    在MATLAB中生成矩阵的三种方法 1. 直接输入法 2. 外部文件读入法 3.特殊矩阵函数生成法 1. 直接输入法 (1)矩阵所有元素必须在[]内 (2)矩阵中同行元素以逗号','或空格分隔 (3) ...

  6. 痞子衡嵌入式:在IAR开发环境下将关键函数重定向到RAM中执行的三种方法

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在IAR开发环境下将关键函数重定向到RAM中执行的三种方法. 嵌入式项目里应用程序代码正常是放在 Flash 中执行的,但有时候也需要将 ...

  7. JS下载文件的三种方法

    因为公司后端忙得无法给批量下载的api,就我们前端自己把多张图片打包成zip下载,zip打包我们用的是jszip,下面是js实现下载的三种方法: 利用HTML download 属性 var a = ...

  8. java定时执行某个方法_Java中定时执行任务的三种方法

    Java中定时执行任务的三种方法 1)java.util.Timer 这个方法应该是最常用的,不过这个方法需要手工启动你的任务: Timer timer=new Timer(); timer.sche ...

  9. JAVA 通过value获取Map中key的三种方法

    JAVA 通过value获取Map中key的三种方法 简介 方法描述 循环法 Stream方法 Apache Commons Collections的BidiMap 总结 简介 我们都知道Map是存放 ...

  10. js中事件绑定3种方法以及事件委托

    ###事件绑定 首先,我先来介绍我们平时绑定事件的三种方法. 1.嵌入dom <button onclick="open()">按钮</button>< ...

最新文章

  1. SQLite中的SELECT子句使用通配符
  2. 软件保障与测试课程实践记录:贪吃蛇小程序
  3. java安全编码指南之:拒绝Denial of Service
  4. 《Python Cookbook 3rd》笔记(3.7):无穷大与 NaN
  5. HBaseConAsia 2019盛会来袭
  6. C/C++ 常量的定义与应用(编程中的常量)
  7. python画数学函数_Python 绘制你想要的数学函数图形 !
  8. python 使用.bat文件自动执行
  9. ProGuard:类混淆,类的指定函数保留
  10. 货币转换程序(双符号)python代码,Python-将货币代码转换为其符号
  11. 手写数字识别mnist
  12. 【微信小程序】体验版获取不到接口数据
  13. qt中socket通信流程图_Qt学习 之 Socket通信(世界上最简单的例子了)
  14. 阿里p7程序员哀叹:35岁,被通知合同不再续签
  15. [BZOJ5109/CodePlus2017]大吉大利,晚上吃鸡!
  16. wireshark Fiddler抓包分析与解密https Fiddler修改https请求和响应
  17. 盘一盘 Python 系列 - Sklearn
  18. adobe cs5 indesign 不显示文本框_Adobe CS5 InDesign自动添加页码
  19. PCB如何更合理的拼版
  20. 魔法币 java_网易2018校招笔试编程题-魔法币 java实现

热门文章

  1. D92-02-ASEMI低压降快恢复二极管TO247封装
  2. 华为主题引擎怎么下载_华为主题动态引擎
  3. HTTP的REST服务简介
  4. 阿里面试失败后,一气之下我图解了Java中18把锁
  5. 【“玩物立志”-scratch少儿编程】迷宫游戏-图片素材
  6. 介绍一款网页翻译插件
  7. HTML圆角+div立体阴影
  8. 如何升级linux内核
  9. MD4、MD5、SHA1、HMAC、HMAC_SHA1区别
  10. JAVA程序员的5年职业规划