Python进阶干货:[中文编码乱码]:案例及解决方法

在初次编写代码的过程中,由于不太了解编码形式,习惯性输入中文,得到的结果便是乱码、无法执行,经常抛出编码转换的异常。

常用的编码器:

ASCII

八位的字节一共可以组合出256(2的8次方)种不同的状态。

当时世界上所有的计算机都用同样的ASCII方案来保存英文文字。

GB2312

GB2312前身:扩展字符集

非英语的国家,他们的字母里有许多是ASCII里没有的,他们采用 127号之后的空位来表示这些新的字母、符号,还加入了很多画表格时需要用的横线、竖线、交叉等形状,一直把序号编到了最后一个状态255。从128 到255这一页的字符集被称”扩展字符集“。

中国人们得到计算机时,已经没有可以利用的字节状态来表示汉字,况且常用汉字太多了。于是完善了“扩展字符集”。

GB2312 是对 ASCII 的中文扩展。GB2312 规则:

1、一个小于127的字符称为半角”字符,意义与原来相同

2、两个大于127的字符连在一起时,就表示一个汉字

3、统统重新编了两个字节长的编码,就是常说的”全角”字符:高字节(从0xA1用到 0xF7)、数学符号、罗马希腊的字母、日文的假名们、ASCII 里面本来就有的数字、标点、字母

GBK——民族文化在计算机中记载的开始

GBK 包括了 GB2312 的所有内容,同时又增加了近20000个新的汉字(包括繁体字)和符号。

只要第一个字节是大于127就固定表示这是一个汉字,不管后面跟的是不是扩展字符集里的内容。

后来少数民族也要用电脑了,于是我们再扩展,GBK 扩成了 GB18030。

中国的程序员们看到这一系列汉字编码的标准通称他们叫做 “DBCS“(Double Byte Charecter Set 双字节字符集)。

DBCS最大的特点:两字节长的汉字字符和一字节长的英文字符并存于同一套编码方案里。

因此他们写的程序为了支持中处理,必须要注意字串里的每一个字节的值,如果这个值是大于127的,那么就认为一个双字节字符集里的字符出现了,一个汉字算两个英文字符。

UNICODE——承载地球上所有的文化

“Universal Multiple-Octet Coded Character Set”,简称 UCS, 俗称 “unicode“。包括了地球上所有文化、所有字母和符号的编码。

unicode 保持其原编码不变,只是将其长度由原来的8位扩展为16位,而其他文化和语言的字符则全部重新统一编码。

无论是半角的英文字母,还是全角的汉字,它们都是统一的”一个字符“!一个字符就是两个字节,“字节”是一个8位的物理存储单元,而“字符”则是一个文化相关的符号。

UTF-8——显示全世界上所有文化的字符

UTF-8是互联网上使用最广泛的一种 unicode 的实现方式

UTF-8 最大的一个特点:它是一种

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值