python基础系列教程——Python中的编码问题,中文乱码问题

  1. 如果不声明编码,则中文会报错,即使是注释也会报错。

    1. # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了 。 在第一行不区分大小写。

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

  3. (1)纯文本文档的获取与处理:直接用urlopen读取后,用read()函数获取文本内容即可。纯文本页面不要转换成BeautifulSoup对象,因为无法解析,会被认为是一堆字符串,只能用字符串的操作方法来解析。 
    (2)CSV文档、PDF文档等非纯文本文档的读取方式:直接通过文档获取链接以字符串的方式读取文档——通过io库的StringIO函数将字符串转换为StringIO对象——通过CSV库或PDF库将StringIO对象读取为相应格式的文档,

  4. 编码类型:

    (1)UTF-8:统一字符集-转换格式8位。它的开头有标记指示字符占了用了多少个字节来表示,一个字符最多有四个字节。
    
    (2)ASCII:每个字符7位,用来表示中文会不够用,但是英文够用了。
    
    (3)UtF-8和ASCII的结合:首位为0,即只包含一个字节的UTF-8字符和ASCII通用,因为相当于只用到了7位。但首位为1的两字节UTF-8字符不通用。
    
    (4)ISO编码:解决非英文非中文语言文档太大的问题,比如土耳其语没有那么多字符,又不能用单纯的ASCII。因此使用ASCII的首位来做特殊化,可以针对不同的语言生成不同的规则。
  5. 在用Python读网页或文档时,最好统一将获取的内容统一转换成UTF-8编码。获取国际站的内容时,最好先看看网站metacharset信息中所指示的编码方式后再确定选择哪种编码方式。

  6. 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中的编码问题,中文乱码问题的更多相关文章

  1. python基础系列教程——Python库的安装与卸载

    python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...

  2. python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda

    ---恢复内容开始--- python基础系列教程——Python的安装与测试:python的IDE工具PyDev和pycharm,anaconda 从头开启python的开发环境搭建.安装比较简单, ...

  3. python基础系列教程——Python3.x标准模块库目录

    python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...

  4. python基础系列教程,数学基础系列教程,数据分析系列教程,神经网络系列教程,深度学习系列视频教程分享交流

    大家好,我是一个技术爱好者,目前对大数据人工智能很是痴迷,虽然学历只有高中,目前正在大踏步的向着人工智能狂奔,如果你也想学习,那就来吧 我的学习进度python基础(Numpy,pandas,matp ...

  5. Python基础入门教程

    Python基础入门教程 Python基础教程 Python 简介 Python环境搭建 Python 基础语法 Python 变量类型 Python 运算符 Python 条件语句 Python 循 ...

  6. 【python可视化系列】python数据可视化利器--pyecharts

    学可视化就跟学弹吉他一样,刚开始你会觉得自己弹出来的是噪音,也就有了在使用python可视化的时候,总说,我擦,为啥别人画的图那么溜: [python可视化系列]python数据可视化利器--pyec ...

  7. 在Servlet中出现一个输出中文乱码的问题(已经解)。

    在Servlet中出现一个输出中文乱码的问题,已经解. @Override public void doPost(HttpServletRequest reqeust, HttpServletResp ...

  8. PHP连接sqlserver的两种方法,向sqlserver2000中写入数据,中文乱码

    项目环境是php5.3.28 项目用的ThinkPHP3.2.3  已经mysql5.5数据库,要和另一个项目对接,需要连接sqlsever2000数据库进行一些操作. 第一种用php自带扩展连接数据 ...

  9. 处理SecureCRT中使用vim出现中文乱码问题

    处理SecureCRT中使用vim出现中文乱码问题 引用原文:http://blog.chinaunix.net/uid-20639775-id-3475608.html因为cat没有问题,定位是vi ...

随机推荐

  1. java 生成可执行jar包

    jar -cvfm my.jar [配置主函数入口文件] [包] Main-Class: 包名.类名   注意“:”后边有一个空格,类名后边要有回车换行

  2. JDBC实例--JDBC连接池技术解密,连接池对我们不再陌生

    一.为什么我们要用连接池技术? 前面的数据库连接的建立及关闭资源的方法有些缺陷.统舱传统数据库访问方式:一次数据库访问对应一个物理连接,每次操作数据库都要打开.关闭该物理连接, 系统性能严重受损. 解 ...

  3. Mingyang.net:Eclipse定义Maven安装

    Eclipse默认会使用内置的Maven安装,这样就可能在导致Eclipse编译时下载一次依赖库,用CMD编译时再下载一次依赖库.打开Ecclipse -> Windows -> Pref ...

  4. DataTime? 的 GetValueOrDefault() 方法

    DataTime? 转换为 DataTime类型 就可以调用 ToString()  自定义格式 @item.CreateDate.GetValueOrDefault().ToString(" ...

  5. FA_资产成批调整(流程)

    2014-06-08 Created By BaoXinjian

  6. AP_创建标准发票后会计科目的变化(概念)

    2014-06-04 Created By BaoXinjian 1. 创建Invoice,并查看所创建的科目

  7. HDU 5402(Travelling Salesman Problem-构造矩阵对角最长不相交路径)

    Travelling Salesman Problem Time Limit: 3000/1500 MS (Java/Others)    Memory Limit: 65536/65536 K (J ...

  8. 【驱动笔记9】初探IRP

    文章作者:grayfox作者主页:http://nokyo.blogbus.com原始出处:http://www.blogbus.com/nokyo-logs/34005738.html 此前我们可能 ...

  9. openssl之EVP系列之9---EVP_Digest系列函数的一个样例

    openssl之EVP系列之9---EVP_Digest系列函数的一个样例     ---依据openssl doc/crypto/EVP_DigestInit.pod翻译     (作者:Drago ...

  10. Oracle学习笔记之四sp1,Oracle 11g的常用函数

    从Oracle学习笔记之四,SQL语言入门中摘出来的,独立成一章节 3.1 字符类函数 ASCII(c)和CHR(i)    分别用于返回一个字符的ASCII码和返回给定ASCII值所对应的字符. C ...