编码字符集以及Python环境下的编码检测

本文介绍了字符编码的基础知识,包括ASCII、GB2312、GBK、Unicode和UTF-8。重点讨论了在Python环境中,如何使用chardet库检测字符串编码,并演示了从UTF-8转为GBK的编码过程,虽然遇到了编码错误问题。

前段时间开辟了Linux办公环境,慢慢开始整理项目研究的进展情况,遂将相应资料整理存档,以备随时查找使用。

声明:以下内容为将自身工作内容结合来自互联网的相关资料进行实践和整理,并非完全原创,如有侵权请联系处理。

Linux平台:LinuxMint 19.1 Tessa

Python平台:Python 2.7.15

 ————————————————

1 编码字符集简介:

1.1 ASCII

American Standard Code for Information Interchange

8-bit 编码,单字节(single byte),共有127个符号。0x20(127) 以下的为“控制码”;0x20(128)以后的为制表符,也称为ASCII “扩展字符集”。

1.2 GB2312

对 ASCII 的中文扩展,在去掉 ASCII “扩展字符集”的基础上,增加约7000个汉字字符。

16-bit 编码,双字节(double byte),即所称的全角字符(127以下的半角字符),用双字节表示汉字,高字节0xA1~0xF7,低字节0xA1~0xFE。

1.3 GBK

对GB2312的重编与扩展

16-bit 编码,双字节,只要高位大127的双字节即认为是汉字字符。

GBK18030,对GBK的扩展,追加几千个我国少数民族字符。

1.4 Unicode

Universal Multiple-Octet Coded Character Set(USC)

简单讲,Unicode 是一种字符集,也称为统一码,或万国码、单一码等,而非编码方式。

由 ISO(国际标谁化组织)提出的字符编码解决方案,规定必须用两个字节,也就是用 16-bit 来统一表示所有的字符。对于 ASCII 里的那些“半角”字符,unicode 包持其原编码不变,只是将其长度由原来的 8-bit 扩展为 16-bit,而其他字符则全部重新统一编码。

1.5 UTF-8

USC Transfer Format

UTF-8 表示每次传输数据的长度是 8-bit,同理,UTF-16 表示每次传输数据的长度是 16-bit。

UTF-8 是具体实现 Unicode 的一种编码方式,从 Unicode 到 UTF-8 称为编码,而从 UTF-8 到 Unicode 称为解码。

UTF-8 最大的特点是,其为一种变长的编码方式,他可以使用 1~4 个字节(byte)来表示一个字符符号,根据不同的符号而变化字节长度。

不同编码之间不能直接转换,需要通过 Unicode 字符集中间过渡来实现转换。

 

2 Python 环境字符集编码工具库 chardet

2.1 安装

使用如下命令之一安装工具库 chardet

sudo apt-get install python-chardet
pip install chardet

2.2 检测字符串的编码格式

使用如下命令检测字符串的编码格式

#encoding:utf-8
import chardet
tset='编码实验'
chardet.detect(test)

2.3 重新编码(以 UTF-8 转为 GBK 为例)

通过命令 decode 可以从 UTF-8 编码为 Unicode,通过命令 encode 可以从 Unicode 编码为 GBK。

#encoding:utf-8
test='编码实验'
unic=test.decode('utf-8')
gbkc=unic.encode('gbk')

注意:从 Unicode 编码为 GBK 有错误,尚未解决。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值