常用字符编码关系说明及python中的用法

目录

使用原则

编码方式的应用

应用一:本地编辑存储设备到内存

应用二:字符传输端到端

附录:编码的一些说明

参考:


在编程过程中常常涉及到的编码有: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 

2、https://baike.baidu.com/item/ASCII/309296?fromtitle=ASCII%E7%BC%96%E7%A0%81&fromid=3712529&fr=aladdin

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值