编码/转换

Posted smilesunday

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编码/转换相关的知识,希望对你有一定的参考价值。

* 编码

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("[email protected]");//"mail%40example.com"
encodeURI("[email protected]"); //"[email protected]"
decodeURIComponent("mail%40example.com"); //"[email protected]"

 

 

4. ASCLL码

 

以上是关于编码/转换的主要内容,如果未能解决你的问题,请参考以下文章

markdown 打字稿...编码说明,提示,作弊,指南,代码片段和教程文章

在代码片段中包含类型转换

sql 日期转换代码片段 - Dato,120,konvertere

从 XML 声明片段获取 XML 编码:部分内容解析不支持 XmlDeclaration

HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet

结合两个代码片段?将用户输入的 Youtube url 转换为嵌入 url,然后将 iframe src 替换为转换后的 url