python基础系列教程——Python中的编码问题,中文乱码问题
全栈工程师开发手册 (作者:陈玓玏)
python教程全解
如果不声明编码,则中文会报错,即使是注释也会报错。只要写中文,必须加一句:# -- coding:utf-8 --。原因:答案在PEP-0263里面有所提及,那就是Emacs等编辑器使用这种方式进行编码声明。
文档编码是一种告诉程序——无论是计算机的操作系统还是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中的编码问题,中文乱码问题相关推荐
- python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器
分享一个朋友的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!大家可以看看是否对自己有帮助:点击打开 全栈工程师开发手册 (作者:陈玓玏) python教程全解 白手起家,从头开启python的 ...
- python基础系列教程——python基础语法全解
点击此处 python教程全解 了解python 1. 了解Python Python是一种解释型(这意味着开发过程中没有了编译这个环节).面向对象(支持面向对象的风格或代码封装在对象 ...
- python基础系列教程——python中的字符串和正则表达式全解
全栈工程师开发手册 (作者:栾鹏) python教程全解 转义字符 正则表达式是建立在字符串的基础上,当需要在字符中使用特殊字符时,python用反斜杠\转义字符.如下表: 转义字符 描述\(在行尾时 ...
- python基础系列教程——python面向对象编程全解
全栈工程师开发手册 (作者:栾鹏) python教程全解 python面向对象编程全解. 面向对象技术简介 一个类占有一个独立的空间,类中的属性叫做类变量,类中的函数,叫做类的方法. 类(Class) ...
- python基础系列教程——python所有包库的下载
下载地址:https://pypi.python.org/pypi?%3Aaction=browse 支持搜索 Index by date: multidict pymatgen moderngl j ...
- python基础系列教程——数据结构(列表、元组、字典、集合、链表)
全栈工程师开发手册 (作者:栾鹏) python数据挖掘系列教程 基本顺序存储结构--列表与元组 Python中的基本顺序存储结构是列表与元组,在操作的复杂度上和数组完全相同,其中列表是可变数据类型, ...
- python基础系列教程——Python3.x标准模块库目录
全栈工程师开发手册 (作者:栾鹏) python教程全解 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:U ...
- python应用系列教程——python中ftp操作:连接、登录、获取目录,重定向、上传下载,删除更改
全栈工程师开发手册 (作者:栾鹏) python教程全解 python中ftp操作: ftp=FTP() #设置变量 ftp.set_debuglevel(2) #打开调试级别2,显示详细信息 ftp ...
- Python基础系列教程 第一节 安装运行Python
安装Python解释器 Python 是一门解释性脚本语言,因此要想让你编写的代码得以运行,需要先安装 CPython 解释器. 根据你电脑的系统以及位数不同,安装步骤也有所差异. Windows 系 ...
最新文章
- SC-A-LOAM:在A-LOAM中加入回环检测
- 138 条 Vim 命令、操作、快捷键全集
- [UML]UML系列——状态机图statechart diagram
- java物业管理系统设计,JAVA物业管理系统设计与实现(论文+源代码)
- 索爱S60 java,谈谈索爱S60 触屏强机U5i的功能怎么样
- hypermesh安装包百度云_HYPERMESH11.0 64bt软件
- Android源码分析(三)-----系统框架设计思想
- Linux 文件类型
- Atitit.软件开发的非功能性需求attilax 总结At
- python大神年薪_我程序员年薪 80 万被亲戚鄙视不如在二本教书的博士生?
- JVM致命错误日志详解
- 导函数连续、可导、可微、连续、有界、可积的关系,史上最全!一张图搞定!
- 基因测序的云计算平台可能带来的变革与进步
- 2018入门级手机VR眼镜对比区别:ugp vr眼镜怎么样?目前哪个vr眼镜牌子效果更好,vr眼镜选哪款?
- Python--数字炸弹游戏
- php实现分时线图,史上最全分时图买卖点图解(转发收藏)!
- YTU 3084 返回指针的函数
- 利用Pytorch搭建简单的图像分类模型(之二)---搭建网络
- Linux网络连接NAT模式
- 考研:研究生考试(七天学完)之《概率与统计》研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(随机事件和概率、一维随机变量及其分布、多维随机变量及其分布、随机变量的数字特征、大数定律和中心
热门文章
- 简析三星新专利,语音识别技术的新方法
- 利用MATLAB平台实现字的语音识别功能
- c语言马拉松试题,C语言马拉松_04.2_函数与指针
- dfs时间复杂度_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法
- supercharge快充_电荷泵?双电芯?高压低流?盘点目前最全快充技术
- 变压器绕组降低邻近效应_高功率UPS性能提升,规格/重量显著降低
- java安卓模拟器和电脑通信_Android 模拟器(JAVA)与C++ socket 通讯 分享
- java reactor模式例子_JAVA BIO,NIO,Reactor模式总结
- mysql输入密码就闪退_MySQL在我的服务列表里凭空消失~
- android蓝牙在有效范围内自动连接,android – 如何在范围内找到可用的蓝牙设备?...