在Python中中文编码综述

Python文件中的编码

Python 默认脚本文件都是 ANSCII 编码的,当文件中有非 ANSCII 编码范围内的字符的时候就要使用"编码指示"来修正一个 module 的定义中,如果.py文件中包含中文字符(严格的说是含有非anscii字符),则需要在第一行或第二行指定编码声明:# -- coding=utf-8 -- 或者 #coding=utf-8,其他的编码如:gbk、gb2312也可以。或者也可以理解成外界有繁多的编码形式,如utf8、gbk等,而PC内部只有ANSCII编码。

Python中的编码与解码

经常遇见两个函数,其一:encode:表示编码,(将一个unicode对象转换为参数中编码格式的普通字符)代表从PC到外部;其二:decode:表示解码,(将普通字符串按照参数中的编码格式进行解析,然后生成对应的unicode对象)代表从外部读取到PC。

例如:

在这里插入图片描述

这里PC会首先对s自动的进行decode操作,由于没有指定解码方式,所以Python会使用sys.defaultencoding指明的方式进行解码(默认的是anscii编码),然后再进行编码操作,使用方式是gb2312。但是这样假若s的编码方式不是anscii编码,则会存在隐患,解决办法:

法一:明确指出s的编码方式:

在这里插入图片描述

这里为首先用utf-8进行解码,然后用gb2312进行编码

法二:更改默认的编码方式:

在这里插入图片描述

最后如果在实际开发中遇到非法字符,使用上述编码和解码方式会出现报错

在这里插入图片描述

这时候一种解决办法就是直接忽略非法字符:

在这里插入图片描述

Python读取不同编码文件

读:在读取文件时,文件解码方式要与文件存储的编码方式相同。例如打开“utf-8”格式存储的文件

在这里插入图片描述

读取文件时还存在一个问题:在某些软件,如notepad,在保存一个以utf-8编码的文件时,会在文件开始的时候插入三个不可见字符(0xEF 0xBB 0Xbf ,即BOM),因此读取时需要自己去掉这些字符,一种解决办法如下:

在这里插入图片描述

Python中的两种字符串类型

在Python中有两种字符串类型,分别是str和unicode。由于Python默认是ANSCII编码,所以如果想要将str转换成特定编码类型,需要把str转换成Unicode,然后从Unicode转换为特定的编码类型,如utf8、gbk等。

其一: 在这里插入图片描述
表示用unicode编码方式存储信息

其二:在这里插入图片描述
表示未指定编码方式,这时PC会自动的利用sys.defaultencoding指定的方式进行解码(默认的是anscii解码)然后存储成unicode编码形式

一个简单例子:

在这里插入图片描述

总结:

一般对于python文件,规定使用固定的一种编码方式。具体方法:可以在代码文件开头使用

在这里插入图片描述

二维码是一种矩阵型条形码,可以存储大量的信息,如URL、文本、图像等。二维码的出现极大地方便了人们的生活,如支付宝、微信支付等移动支付方式的普及,都得益于二维码的发展。随着物联网的兴起,二维码的应用将更加广泛。 二维码的编码方式有多种,最常见的是QR码。QR码是由日本的Denso Wave公司于1994年发明的,其编码方式是将数据按照一定规则进行排列,然后用黑白相间的小方块表示出来。QR码具有容错率高、信息密度大、编码速度快等优点,被广泛应用于移动支付、物流追踪、广告推广等领域。 编程实现一种二维码编码可以使用Python语言的qrcode库。该库可以生成QR码图片,并支持不同级别的容错率、不同版本的二维码。以下是一个简单的Python程序,可以生成一个带有文本信息的QR码图片: ```python import qrcode data = 'Hello, world!' img = qrcode.make(data) img.save('qrcode.png') ``` 以上程序,我们使用qrcode库生成一个QR码图片,将字符串"Hello, world!"作为数据传入,然后将生成的图片保存到文件qrcode.png。 此外,qrcode库还支持在生成的二维码添加图片、颜色等自定义样式,具体使用方法可以参考该库的官方文档。 总之,二维码的发展已经成为了一个不可逆转的趋势,未来二维码的应用领域将不断扩展,如智能家居、智慧城市等。我们可以通过编程实现二维码的编码,为未来的应用奠定基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值