目录
在编程过程中常常涉及到的编码有:ASCII、UTF8、Unicode等;中文编码有GB2312和GBK等;
ASCII编码是最基础的,包含了编程过程中常用的符号和字符,有8bit;
Unicode是最全的编码,包含了各种符号、字符和各种语言,也被成为万国码;UTF-8是Unicode编码的一种是变长的,可以节省空间,也比较常用;也有其它形式的Unicode编码;
使用原则
- 如果只有大小写字母和常用字符,使用ASCII编码即可;
- 如果含有中文或者其它语言则用Unicode或者UTF-8即可;
- 如果只有中文,可以用GBK来编码;
编码方式的应用
应用一:本地编辑存储设备到内存
使用文本编辑器,比方说记事本来编写,即,存储设备为了节省空间用UTF8,到内存之后为了方便统一使用Unicode;
Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;
第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码
应用二:字符传输端到端
使用bytes也就是字节流来传输的,字符串需要编码之后成为字节流传输,字节流获取之后需要解码来得到字符串,为了避免编码解码混乱的问题,应该使用UTF-8对数据进行编码和解码的转换,例如:'str'.encode('utf-8'),'bytes'.decode('utf-8');
附录:编码的一些说明
1、ASCII编码
全称American Standard Code for Information Interchange
基础编码为7位,最高位用于奇偶校验,占8bit,常见ASCII码的大小规则:0~9<A~Z<a~z。
0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 [1] 。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号 ,不常用 。
2、Unicode编码
Universal Multiple-Octet Coded Character Set
统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
2、中文编码GB2312、GBK
GB2312有一些生僻字不能表示,一般的windows系统使用GBK来编码;
参考:
1、https://www.liaoxuefeng.com/wiki/1016959663602400/1017075323632896