【Python自学】03.字符串和编码(上)
2017-10-24 14:51
246 查看
打了鸡血,一天二更
之前也说过字符串是一种数据类型,但是它比较特殊,主要是因为编码问题。既然如此,先搞清楚下计算机编码的相关内容。
早期设计 8 bit 表示一个字节,一字节表示最大整数 11111111=十进制255
两字节可表示最大65535,四字节4294967295
世界上有上百种语言,不同的国家可能有不同的标准,例如 ASCII 和 GB
常用两个字节表示一个字符,非常偏僻的字符用上 4 个
现代大多数操作系统和编程语言都支持该编码
ASCII编码中,A 是十进制的65(010000001),字符 0 是十进制的48(00110000)(注意‘0’和0不同)。汉字已经超出 ASCII 编码范围,而 Unicode 的十进制是20013(01001110 00101101)
如果要将 ASCII 编码中的 A 改为 Unicode 编码,前面补 0 即可:00000000 01000001
把 Unicode 字符根据不同数字大小编写成 1-6 个字节:
常用英文字幕编成1字节
汉字通常编写成3个字节,很生僻的字符编写成 4-6 个字节
优点:
如果传输的文本包含大量英文字符,将节省大部分空间
大量支持 ASCII 编码的历史遗留软件可以在 UTF-8 编码下继续工作。
使用笔记本编辑时:
浏览器:
很多网页上的源码有类似的信息,表示该网页正是用的 UTF-8 编码。
好多文字…基本上搬过来了,嘛,随便看看得了
之前也说过字符串是一种数据类型,但是它比较特殊,主要是因为编码问题。既然如此,先搞清楚下计算机编码的相关内容。
计算机编码
只处理数字,要处理文本就得先把文本转为数字才能处理。早期设计 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 编码。
好多文字…基本上搬过来了,嘛,随便看看得了
相关文章推荐
- 【python3自学笔记3】—字符串和编码
- 【Python自学】04.字符串和编码(下)
- 8.python中字符串的编码和解码问题——decode/encode
- 这篇文章讲得比较清楚python的字符串编码问题
- python字符串编码判断
- 使用自己的Python函数处理Protobuf中的字符串编码
- python判断字符串编码的简单实现方法(使用chardet)
- Python的数据类型 字符串和编码
- 解决python中因为字符串编码导致的错误
- python字符串编码识别模块chardet简单应用
- Python day2 part1:字符串编码
- Python中文编码问题(字符串前面加'u')
- Python入门(二)——IDE选择PyCharm,输入和输出,基础规范,数据类型和变量,常量,字符串和编码,格式化
- python:字符串编码问题
- Python基础教程-字符串和编码
- 20170729Python03_字符串
- Python基础--变量定义、字符串切片及编码
- Python判断字符串编码以及编码的转换
- Python2和Python3中的字符串编码问题解决
- Python字符串编码——Unicode