编码解码

* 编码

https://blog.csdn.net/u012252959/article/details/49025225

1. 种类

  发明:美国等国家发明,标准码 iso-8859-1,编码单单字节编码,支持欧洲语言

  演变:机器不认识中文,国际码 gbk 简称  gb2312  【GBK汉子国标扩展码,采用gb2312的所有汉字及编码还涵盖了Unicode中的汉字】

  后来:阿拉伯语、日语、韩语等,统一编码UniCode

 

2. URL和URI

  URL 统一资源定位符,地址栏中就是url,如 http://www.baidu.com/question/01.html

  URI  统一资源标识符,从虚拟路径开始, 如 /question/01.html

  问题: [字母:a-z A-Z , 数字:0-9, 特殊符号:,$-_.+!*'()  ] 不用进行编码可直接用于url。 意味着url不能直接使用中文,http://www.aβγ.com 等,那么RFC 1738没有规定具体的编码方法,而是直接交给应用程序(浏览器)

         自己解决,这样就导致了“url乱码”

 

  结论: 网址路径包含汉字 (http://zh.wikipedia.org/wiki/春节):采用 utf-8 编码 ,变为 http://zh.wikipedia.org/wiki/%E6%98%A5%E8%8A%82

      查询字符串中包含汉字 (http://www.baidu.com/s?wd=春节): 采用操作系统默认编码

      get/post请求:由网页的编码决定<meta http-equiv="Content-Type" content="text/html;charset=xxxx">

      

  解决方法:先对url编码,提交服务器。

3.编码解码

3.1 escape()编码

     被编码后都变为unicode字符

     在/u0000 ~ /u00ff直接转换,escape()不对【+】进行编码(因为空格被转换为+字符), 解码unescape()  ,比较古老

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

 

3.2 encodeURI()

  - js中真正对url编码的函数。

  - 对整个url编码,不对【; / ? : @ & = + $ , #】编码。

  - 编码后输出符号为 utf-8 形式,并且每个字节前面加了%

javascript: encodeURI("春节"); //"%E6%98%A5%E8%8A%82" 
decodeURI("%E6%98%A5%E8%8A%82");

 

3.3  encodeURIComponent()

  - 对url的组成部分编码,不是整个url

  - encodeURI()不对【; / ? : @ & = + $ , #】编码,但是在encodeURIComponent() 中都会被编码

  - 解码 decodeURIComponent()

encodeURIComponent("mail@example.com");//"mail%40example.com"
encodeURI("mail@example.com"); //"mail@example.com"
decodeURIComponent("mail%40example.com"); //"mail@example.com"

 

 

4. ASCLL码

 

posted on 2018-08-03 11:10  莫伊筱筱  阅读(284)  评论(0编辑  收藏  举报