千锋教育-做有情怀、有良心、有品质的职业教育机构

400-811-9990
手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

上海
  • 北京
  • 郑州
  • 武汉
  • 成都
  • 西安
  • 沈阳
  • 广州
  • 南京
  • 深圳
  • 大连
  • 青岛
  • 杭州
  • 重庆
当前位置:成都千锋IT培训  >  技术干货  >  Python中的编码问题,中文乱码问题

Python中的编码问题,中文乱码问题

来源:千锋教育
发布人:xqq
时间: 2023-11-05 22:24:42

如果不声明编码,则中文会报错,即使是注释也会报错。只要写中文,必须加一句:#--coding:utf-8--。

文档编码是一种告诉程序——无论是计算机的操作系统还是Python代码——读取文档的规则。正确读取一个文档,往往需要先知道文件的扩展名,因为编码方式往往与扩展名有很大的关系。

(1)纯文本文档的获取与处理:直接用urlopen读取后,用read()函数获取文本内容即可。纯文本页面不要转换成BeautifulSoup对象,因为无法解析,会被认为是一堆字符串,只能用字符串的操作方法来解析。

(2)CSV文档、PDF文档等非纯文本文档的读取方式:直接通过文档获取链接以字符串的方式读取文档——通过io库的StringIO函数将字符串转换为StringIO对象——通过CSV库或PDF库将StringIO对象读取为相应格式的文档,

编码类型:

(1)UTF-8:统一字符集-转换格式8位。它的开头有标记指示字符占了用了多少个字节来表示,一个字符最多有四个字节。

(2)ASCII:每个字符7位,用来表示中文会不够用,但是英文够用了。

(3)UtF-8和ASCII的结合:首位为0,即只包含一个字节的UTF-8字符和ASCII通用,因为相当于只用到了7位。但首位为1的两字节UTF-8字符不通用。

(4)ISO编码:解决非英文非中文语言文档太大的问题,比如土耳其语没有那么多字符,又不能用单纯的ASCII。因此使用ASCII的首位来做特殊化,可以针对不同的语言生成不同的规则。

在用Python读网页或文档时,最好统一将获取的内容统一转换成UTF-8编码。获取国际站的内容时,最好先看看网站metasharset信息中所指示的编码方式后再确定选择哪种编码方式。

Encode和Decode:

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编码。

encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gb2312编码。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

以上内容为大家介绍了Python中的编码问题,中文乱码问题,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。

猜你喜欢LIKE

python delattr函数如何使用?

2023-11-10

python time.strptime的格式化

2023-11-10

pythonGIL在Python多线程的应用

2023-11-10

最新文章NEW

python中pdb模块怎么用?

2023-11-10

Python如何截图保存?

2023-11-10

python​中缺少module怎么办?

2023-11-10

相关推荐HOT

更多>>

快速通道 更多>>

最新开班信息 更多>>

网友热搜 更多>>