python声明编码为gbk_Python字符串编码坑彻底详细解决

来源:实习僧

作者:实习僧的何梁

真正完全搞清楚Python的编码问题

我想大家经常被Python的编码问题搞的晕头转向,下面我一头来自实习僧的牛,为您详细解析这个天坑:

请看图:

1、python中一切皆对象,字符对象分为两种,一种是unicode对象,一种是str对象。

2、python中字符是unicode为基础的,所以平时我们的字符串,也就是str在python内存中其实是以unicode编码存储的。

3、所以我们平时print一个字符串的时候,看到的是中文,但是如果你把这个字符串放在list里(就是外面加上[ ]),再print,就能看到原生的编码了。因为前面说了,在python内存存储中都是以unicode存储的,所以放在List里面,打印就能看见原生的存储模式。

4、str是字符串对象,但是可以有很多不同的编码,utf-8,gbk,ascii,都是编码。

5、不同编码的str对象,互相不能直接转换,也就是说utf-8编码的不能直接转换成gbk的。

6、但是不同编码的str对象都可以解码成unicode对象,因为一切数据在Python都是以unicode存储的,str.decode(编码类型)

7、unicode对象也可以编码成任意一种编码的str对象。 unicode.encode('编码类型')

8、所以不同编码的str对象可以先解码(decode)成unicode 再编码(encode)成其他编码的str对象。

9、utf-8包含国际上所有字符的编码,GBK主要包含全部中文字符,所以说我们大家爱用utf-8,因为全。

10、所以说utf-8中有一些字符,gbk没有,所以有一些Utf-8解码后再编码成gbk后会报错,因为gbk没有那种字符。

11、有一些str中可能混着有gbk,utf-8等好几种编码,所以有时候decode的时候会报错,因为你按照gbk解码,可能里面又包含了一种不识别的utf-8码得到。

12、以上两条,有没有只编码或者解码对的啊,错误的字符就跳过?

13、有,decode('utf-8','ignore'),encode('utf-8','ignore') 加一个'ignore'参数 就会忽略错误。

14、在python中可以使用chardet.detect(str)来检测一个str是什么编码的:

15、chardet.detect(str)有一个缺点就是,他是根据概率来的,比如如果字符串是'aaaaaa你',前面的单字符就会判断为其他编码,因为单字母本身就是其他编码都支持,所以:

#ISO-8859-2 西欧字符集

16、print str 或者 unicode 都会显示出正常的文字,但是python中直接显示 str是'\xe3\xbd'这种字符,unicode是 u'\u4f60' 这种的

17、大家可以在自己本机上多试试。

●本文编号2201,以后想阅读这篇文章直接输入2201即可。

●本文分类“Python”,搜索分类名可以获得相关文章。

●输入m可以获取到文章目录

本文内容的相关公众号推荐Python编程↓↓↓

Linux学习↓↓↓

更多推荐《

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/349434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

golang 包含文本_Golang教程之Web篇(七)

首先,大家一起思考一个问题:何为Web编程?严格来说,这只是一个叫法,并没有学术上的定义,但是一般大家都说到web都是指浏览器相关,所以大家一般说的web开发要么是PC Web要么就是手机Web&#xff0…

junit 测试 异常_使用JUnit规则测试预期的异常

junit 测试 异常这篇文章展示了如何使用JUnit测试预期的异常。 让我们从我们要测试的以下类开始: public class Person {private final String name;private final int age;/*** Creates a person with the specified name and age.** param name the name* param …

delphi switch语句例子_Java 14 祭出增强版 switch,真香!!

Java14:栈长,我还有机会吗?栈长:必须有!今天说下switch!关注Java技术栈的朋友应该都知道,switch 在 JDK 12 中进行增强了,并且在 JDK 12/13 中一直是预览特性,刚出来的时…

呼叫我,或异步REST

本文是使用Spring Boot Java 8进行的异步REST应用程序工作的非常简单的示例。SpringBoot使Web应用程序的开发几乎非常容易,但是为了简化任务,我从Spring存储库中举了一个例子,称为rest- service ,将其分叉到我自己的存储库中 &am…

python中break可以用在for和if中吗_Python的for和break循环结构中使用else语句的技巧...

在Python中的while或者for循环之后还可以有else子句,作用是for循环中if条件一直不满足,则最后就执行else语句。 1 2 3 4 5 6 7 8 9 10 11 for iin range(5): if i 1: print in for else: print in else print after for-loop # in for # in else # after…

ldconfig mysql_ldconfig命令介绍

ldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。**ldconfig的主要用途:默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。搜索出可共享的动态链接库,库文件的格式为&#xf…

sqoop 导入到hive字段全是null_Sqoop 一点通

sqoop 是什么?sqoop 主要用于异构数据:1. 将数据从hadoop,hive 导入、导出到关系型数据库mysql 等;2. 将关系型数据库 mysql 中数据导入、导出到 hadoop 、hve 。sqoop 版本说明sqoop 1 版本主要从1.4.0 到 1.4.7;sqoop 2 版本主要…

php使用pdo操作mysql数据库实例_php使用PDO操作MySQL数据库实例_PHP

本文实例讲述了php使用PDO操作MySQL数据库的方法。分享给大家供大家参考。具体分析如下:PDO是mysql数据库操作的一个公用类,我们不需要进行自定类就可以直接使用pdo来操作数据库,但是在php默认配置中pdo是未开启所以我们必须先在php.ini中开启它才可以使用,这里来详…

雅虎yql_从RSS Feed和YQL创建数据表

雅虎yqlYahoo Query Language( YQL )是一种查询语言,例如SQL。 使用YQL,我们可以跨Web服务 查询 , 过滤和联接数据。 YQL也可以阅读RSS feed。 响应可以是JSON或XML。 雅虎提供了一个YQL控制台,用于调试…

python入门之函数调用第二关_Python基础语法学习笔记之风变第九关函数

一、初识函数 1、函数的作用 2、函数的组成 函数(Function)能实现的功能从简单到复杂,各式各样,但其本质是相通的,我们可以看作成三个部分。 3、定义和调用函数 def math(x): y 3*x 5 return y 第1行:def…

流与装饰器

几年前, Streams API随lambda表达式一起在Java 8中引入。 作为一个熟练的Java专家,我尝试在我的一些项目中使用此新功能,例如here和here 。 我不是很喜欢它,然后又回到了好的老房子里。 此外,我创建了装饰库Cactoos来取…

流线动态图python_Node.js Stream(流)

Node.js Stream(流) Stream 是一个抽象接口,Node 中有很多对象实现了这个接口。例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出)。 Node.js,Stream 有四种流类型&#xff1…

gacutil不是内部或外部命令_Win7命令提示符输入taskkill提示不是内部或外部命令...

使用win7系统的用户,想在命令提示符下使用taskkill命令删掉进程的时候,却提示taskkill不是内部或外部命令,也不是可运行的程序,遇到这样的问题,这位用户不知道怎么解决。所以给大家带来了解决方法教程,希望…

mysql两台服务器怎么做数据同步_两台mysql服务器实现双机互备配置并测试数据同步...

对于实现两台机子的互备配置,本文作出了详细的介绍,之后的测试数据同步,在10.168.1.44服务器数据库里修改一条数据, 可以看到数据已经同步过来了。反过来,修改10.168.0.126的数据,也可以看到10.168.1.44数据…

excel 复制数据 sql server 粘贴_win32 实现 excel 快速复制粘贴

直接简明说:该方法可以直接将一张代码的区域内容直接 copy 到另一张表上,并且字体颜色、背景、格式都不变,另外还可以 copy 公式(相当于 excel 下拉公式)from win32com.client import Dispatchimport win32com.clientdef writeCol(filename):…

什么是JAX-RS注释?

JAX-RS概述(第1部分) JAX-RS API构成Java EE平台承诺提供标准驱动技术的重要组成部分。 互联网无处不在的性质以及对微服务体系结构的日益增长的兴趣已将更多的精力放在小型可扩展的自治服务及其互操作性上。 允许微服务彼此之间以及“外部世界”之间进行…

oracle 查询过去一个星期的数据_过去一星期,最懂我的居然是一个表情包

文/黄亚男编辑/大风微信表情包上新快一周了,除了各个聊天对话框、朋友圈,蔓延到了其它社交平台。小黄脸表情伴随着微信的诞生和升级,迄今在微信上已经四次更新。每一次几乎有一个出圈的表情:第一次是“笑哭”;第二次则…

mysql的count报错_Mysql报错注入原理分析(count()、rand()、group by)

报错需要count(*),rand()、group by,三者缺一不可前提:当行数大于等于3行时才会报错。原链接:https://www.cnblogs.com/xdans/p/5412468.html几个fool()原理解释:selectcount(*),floor(rand(0)*2) from test group by …

1.0jpa 2.0_EasyCriteria 2.0 – JPA标准应该很容易

1.0jpa 2.0在今天的帖子中,我们将看到名为EasyCriteria的框架的新版本。 在这篇文章的结尾,我们将在博客中看到这里的内容。 不幸的是,JPA标准存在一个巨大的问题,即冗长。 为什么不变得更容易? 像这样认为EasyCriteri…

python 从入门到实践_Python编程从入门到实践日记Day15

Python编程从入门到实践日记Day15第5章 字典(三)1.使用字典(三)—由类似对象组成的字典在前面的示例中,字典存储的是一个对象(游戏中的一个外星人)的多种信息,但你也可以使用字典来存储众多对象的同一种信息。例如,假设你要调查很多人&#x…