10-Python-字符类知识

字符编码

与字符编码有关的是文本文件内容和字符串数据类型,这两种情况都设计到字符编码的问题
字符编码指的是翻译或者转换二进制数字为人能看得懂的数字,或者将人们能看懂的数据以数字形式存储在计算机中。

字符编码表

01-ASCII码

计算机最初只考虑英文,所以诞生了ASCII表,这种表的有两个特点:

  • 只有英文字符与数字的意义对应关系
  • 一个英文字符对应1Bytes,1Bytes等于8位,8位可以表示256中字符

image.png

02-GBK码

由于时代的发展,其他国家的人们也接触到了计算机,各国人民自己也在自己的计算机中使用自己的计算机标准,中国人使用的是GBK字符编码标准,日本人使用的是Shift_JIS码编码标准,这样就可以识别自己国家自己的标准了。
GBK码采用16位-2Bytes来对接一个中文字符,可以表示六万五千多个汉字

03-Unicode编码

Unicode编码兼容万国字符,采用16位表示一个中文字符串,个别生僻字会采用32位或者64位。
如果我们使用unicode编码,内存中的老版本字符,必须先转换成unicode字符,再从unicode字符转换成人类的字符。
我们无法使用unicode完成GBK和Shift_JIS的转换,老的字符编码都可以转换成unicode,但是不能通过unicode互相转换。

04-UTF-8编码

UTF-8(unicode transform format 8)可以完成Unicode从2Bytes转换成1Bytes,把英文字符转换成1个Bytes,把汉字转换成3个Bytes,把日文和韩文用其他Bytes表示,完成了一个整体上的优化。

05-总结

  • 内存固定使用Unicode,我们可以改变的是存入硬盘采用格式
  • 英文+汉字 转换成Unicode再转换成GBK
  • 英文+日文 转换成Unicode再转换成shift-jis
  • 万国字符 转换成Unicode再转换成Utf-8

如果我们使用Shift-JIS编码存日文加中文,那么中文就会被存乱,以"???"的形式代替,此时数据就无效了。
如果我们使用GBK存储中文,然后使用Shift-JIS读取,此时就会读错,将编码转换为GBK就可以正常读取了。、
**文件存乱了解决方法:**编码方式应该设置成支持文件内容的字符编码。
**文件取乱了解决方法:**文件以什么方法写入硬盘,就要以什么编码方式读入内存

字符编码在Python

Python3默认编码utf-8,而Python2默认的编码为ASCII码,我们可以使用文件头修改默认的编码

#coding:utf-8 
# 控制器管的是读的功能,告诉控制器我使用的是读的编码
info = '学习'
res = info.encode('gbk')
print(res.decode('gbk')  # 正常不报错
print(res.decode('unicode'))  # 报错

Python3的str类型默认存为Unicode编码,无论如何都不会乱码。
Python2需要使用**x=‘u’**来保证str类型不乱码,如果不强制,字符串值就会按照文件头指定的编码格式存入变量值的内存空间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蓝学不会嵌入式!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值