美文网首页
浅谈编码

浅谈编码

作者: greenteaObject | 来源:发表于2017-07-14 02:19 被阅读0次

关于编码

编码问题是在编程中经常见到的一个问题.
最开始,计算机是由美国人发明的,因此,最开始的编码方式是采用ASCII编码.随着时代的发展,很多国家也慢慢的开始接触计算机,接触互联网,例如中文这么多的汉字, ASCII编码是完全不够用的,一次中国制定了GB2312编码,用来把中文编进去.那么问题来了,全世界这么多的语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。
这可怎么办呢?
(国际标谁化组织)的国际组织决定着手解决这个问题。他们采用的方法很简单:废了所有的地区性编码方案,重新搞一个包括了地球上所有文化、所有字母和符号
的编码!他们打算叫它”Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。
因此,我们可以明白的是:

为了将所有国家的语言进行统一化,而不会出现各种版本,Unicode所有的字符都使用两个字节 .
ASCII是1个字节,Unicode是两个字节

那么又出现问题了,加入一篇文章都是用英文写的话,两个字节例如'A',它的Unicode编码为00000000 01000001,Unicode比ASCII多了一倍的存储空间,存储和传输上是很大的浪费.
那么'UTF-8'诞生了!!!
UTF-8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用UTF-8编码就能节省空间.

为了不造成字节上的浪费,出现了UTF-8,从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换。

字符 ASCII Unicode UTF-8
A 01000001 00000000 01000001 01000001
01000001 01001110 00101101 11100100 10111000 10101101
进制 二进制 十六进制 二进制

URL编码

URL编码的混乱...

  1. 网址路径的编码,用的是utf-8编码(浏览器发出HTTP请求)
  2. 查询字符串的编码,用的是操作系统的默认编码(浏览器发出HTTP请求)
  3. GET和POST方法的编码,用的是网页的编码(浏览器发出HTTP请求)
  4. 在Ajax调用中,IE总是采用GB2312编码(操作系统的默认编码),而Firefox总是采用utf-8编码(Javascript生成HTTP请求)

如何解决Javascript生成HTTP请求?

  • encodeURI()
    encodeURI()是Javascript中真正用来对URL编码的函数
image.png

它对应的解码函数是decodeURI()

image.png
  • encodeURIComponent()
    最后一个Javascript编码函数是encodeURIComponent().与encodeURI()的区别是,它用于对URL的组成部分进行个别编码,而不用于对整个URL进行编码.
    因此,"; / ? : @ & = + $ , #",这些在encodeURI()中不被编码的符号,在encodeURIComponent()中统统会被编码.至于具体的编码方法,两者是一样.
image.png

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

参考自:
阮一峰:http://www.ruanyifeng.com/blog/2010/02/url_encoding.html
廖雪峰:http://www.liaoxuefeng.com/
知乎:https://www.zhihu.com/question/23374078

相关文章

  • 2018-08-13

    浅谈iOS编码规范 命名 awakeFromNib不能拿到真实尺寸

  • 浅谈编码

    关于编码 编码问题是在编程中经常见到的一个问题.最开始,计算机是由美国人发明的,因此,最开始的编码方式是采用ASC...

  • 编码浅谈

    为什么要熟悉编码的本质?深入理解计算机软硬件知识深入理解计算机背后的语言 一、先来理解编码 广义的理解:编码就是交...

  • 浅谈字符编码

    ASCII 占1个字节,只支持英文 GB2312 占两个字节,支持6700+汉字 GBK GB2312的升级版,支...

  • URL编码浅谈

    本文是对在正常网络请求的URL中哪些字符需要编码,为什么需要编码进行了说明 URI介绍 为什么需要URL编码 通常...

  • 一篇文章助你理解Python2中字符串编码问题

    前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unic...

  • CSS综合13

    浅谈编码规范 命名技巧 语义化标签优先 基于功能命名、基于内容命名、基于表现命名 简略、明了(翻译成英文) 所有命...

  • 防御 XSS攻击

    浅谈XSS—字符编码和浏览器解析原理 XSS简介 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascadin...

  • 浅谈什么是字符编码

    计算机是如何存储数据的 在谈什么是字符编码前,我们首先要知道一个概念,计算机是如何存储数据的:计算机是由逻辑电路组...

  • 浅谈Java的编码问题

    前言 因为最近在做安全的问题 各种加密算法最后得出来的都是byte[ ],存储在本地则是char。因为之前不是很熟...

网友评论

      本文标题:浅谈编码

      本文链接:https://www.haomeiwen.com/subject/lcxnhxtx.html