来源:实习僧

作者:实习僧的何梁

真正完全搞清楚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学习↓↓↓

更多推荐《

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

  1. Python字符串编码坑彻底详细解决 何梁

    所以不同编码的str对象可以先解码(decode)成unicode 再编码(encode)成其他编码的str对象. 真正完全搞清楚Python的编码问题 我想大家经常被Python的编码问题搞的晕头转 ...

  2. python 输出字符串编码_Python print 字符串编码问题

    又一次, 被Python的编码问题搞得焦头烂额. 过去的记忆中, Python给我的印象之一就是让人痛不欲生的编码问题, 后来基本不碰Python很可能与此有关. 这次又用到Python了, 基本上, ...

  3. php兼容编码,PHP截取字符串编码(兼容utf-8和gb2312)

    昨天晚上和今天上午看了字符编码的问题,还有一些别人截取字符串的函数,自己也写了一个,兼容utf-8和gb2312的 //截取字符串长度.支持utf-8和gb2312编码.若为gb2312,先将其转为u ...

  4. php curl p12证书处理,PHP如何支持CURL字符串证书传输(详细解决过程)

    背景 最近在对接微信支付的时候,需要在退款处用到证书,由于我们是SAAS平台,要支持多方多渠道支付,如果把所有证书文件保存在应用服务器会受到SLB的影响,会导致某台机器文件不同步而阻碍退款流程,但把文 ...

  5. python转换字符编码_Python常见字符编码间的转换

    学习Python,字符编码间的转换是绕不过去的一只拦路虎,不把编码彻底搞明白,总有一天它会猝不及防坑你一把. Python2.x和Python3.x在字符编码的设置上也有很大区别(Python3未来将 ...

  6. 如何解决python中编码错误的问题_【总结】Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 对于Python解析器 而Python解析器所干的事情,就是: Python解析器,根据当前的所用的字符串编码类型 此字符串编码类型,是你自己所设置的 不 ...

  7. python2发送http不编码_[转]Python 2.x中常见字符编码和解码方面的错误及其解决办法...

    Python 2.x中的字符编码,设计的的确不好,导致初学者,甚至是即使用Python很长时间的人,都会经常遇到字符编解码方面的错误. 下面就把一些常见情,尽量的都整理出来,并给出相应的解决办法. 看 ...

  8. Java笔记-字符串编码与解码以及编码表原理

    编码表 编码表:是一张由字符及其对应编码的表 计算机只能识别二进制数据,早期由电信号演化而来. 为了方便使用计算机,让它可以识别各个国家的文字,就将各个国家的文字用数字来表示,并一一对应,形成一张编码 ...

  9. php 字符串编码方式转换,PHP 字符串编码的转换

    GBK 和 UTF-8 编码的转换是一个非常恶心的事情,比如像 PHP 中的 json_encode 本身根本不支持 GBK 形式的编码.有两个库函数能够支持编码的转换,通常能够想到的就是 iconv ...

最新文章

  1. poj 1789 Truck History(最小生成树 prim)
  2. 二十八、电力窃漏电案例模型构建
  3. 页面加载图片前用空态图代替真正图片
  4. 冒泡排序c java c,冒泡排序,c语言冒泡排序法代码
  5. C语言实现排名算法和排位算法
  6. 精品网站 mysql,【网址导航系统】基于PHP+MYSQL开发的开源网站分类目录管理系统...
  7. mysql解压版配置win8_Windows安装mysql8解压版
  8. 制作GHOST XP 基于自由天空驱动包+SysPacker 2.1
  9. java redis jar_Java使用Redis
  10. 计算机界面视频录制软件,怎么进行电脑界面上的画面录制,推荐下好用的电脑录屏软件呗...
  11. Python进行UDP编程
  12. 谷粒商城项目基础篇总结文档
  13. Delphi TStringList的用法
  14. python模拟鼠标拖动_python模拟鼠标拖动教程
  15. 参数问题:nested exception is java.lang.NumberFormatException: For input string: “null“,已解决。
  16. 简单三步下载网页微博中的视频
  17. 一.pandas的导入读取
  18. 【342期】SpringBoot + Redis 布隆过滤器防恶意流量击穿缓存的正确姿势!
  19. 【从饮水机到名人堂之c语言】日常学习总结
  20. 深度学习与计算机视觉教程(11) | 循环神经网络及视觉应用(CV通关指南·完结)

热门文章

  1. Java相当好的隐私(PGP)
  2. dede rss.php,DeDeCMS dede 织梦cms RSS全站静态输出的实现方法
  3. python具体工作内容_有没有人知道公司里用python工作的内容有什么
  4. MacOS命令终端(CMD)的快捷键/终端快捷键
  5. 获取文件的MIME类型
  6. Linux 关机/关闭主机/关闭系统/重启系统/注销系统的命令
  7. easyui数据表格显示复选框_【Excel技巧】使用控件一键切换实现单位元和万元随意显示...
  8. c语言限制字符数,C语言中“不受限制”的字符串函数总结.pdf
  9. 量化指标公式源码_通达信指标公式源码线上阴线指标公式
  10. Python3判断是否为回文数