在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文件,规定使用固定的一种编码方式。具体方法:可以在代码文件开头使用

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值