您的位置:首页 > 编程语言 > Python开发

【Python自学】03.字符串和编码(上)

2017-10-24 14:51 246 查看
  打了鸡血,一天二更

     


   之前也说过字符串是一种数据类型,但是它比较特殊,主要是因为编码问题。既然如此,先搞清楚下计算机编码的相关内容。

计算机编码  

只处理数字,要处理文本就得先把文本转为数字才能处理。

早期设计 8 bit 表示一个字节,一字节表示最大整数 11111111=十进制255

两字节可表示最大65535,四字节4294967295

世界上有上百种语言,不同的国家可能有不同的标准,例如 ASCII 和 GB

ASCII编码:

  美国人最早只把127个字母编码进计算机去,大小写英文字母、数字和符号。例如大写 A 编码 65,小写 z 编码是122。

GB2312编码:

  我国为了计算机处理中文(需要至少两个字节),创建的一种与 ASCII 编码不冲突的编码。

Unicode标准/编码

  因为各国标准不一,创的编码也许完全不同,所以会不可避免地出现冲突,结果就是在多语言混合的文本当中,显示出来一堆的乱码。于是乎,Unicode标准就是在此时应运而生,将所有语言统一到一套编码里面。

常用两个字节表示一个字符,非常偏僻的字符用上 4 个

现代大多数操作系统和编程语言都支持该编码

ASCII与Unicode的区别:

 ASCII编码是 1 字节,而Unicode通常是2字节

 ASCII编码中,A 是十进制的65(010000001),字符 0 是十进制的48(00110000)(注意‘0’和0不同)。汉字已经超出 ASCII 编码范围,而 Unicode 的十进制是20013(01001110 00101101)

 如果要将 ASCII 编码中的 A 改为 Unicode 编码,前面补 0 即可:00000000 01000001 

UTF-8编码:

如果全是用 Unicode 编码,乱码解决了,但是写的文本全英,用 Unicode 编码比 ASCII 编码需要多一倍的存储空间,在存储和传输上就非常不划算。于是乎节约版“可变长编码”UTF-8又横空出世。

把 Unicode 字符根据不同数字大小编写成 1-6 个字节:    

  常用英文字幕编成1字节

汉字通常编写成3个字节,很生僻的字符编写成 4-6 个字节

优点:

  如果传输的文本包含大量英文字符,将节省大部分空间

  大量支持 ASCII 编码的历史遗留软件可以在 UTF-8 编码下继续工作。

目前计算机系统通用的字符编码工作方式

在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者传输的时候就转换成为 UTF-8 编码。

使用笔记本编辑时:

           


浏览器:

          


  很多网页上的源码有类似的信息,表示该网页正是用的 UTF-8 编码。

  好多文字…基本上搬过来了,嘛,随便看看得了

          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: