2019独角兽企业重金招聘Python工程师标准>>>

字符串编码简介

  1. 计算机只能处理数字,文本转换为数字才能处理。计算机中8个bit作为一个字节,所以一个字节能表示最大的数字就是255

  2. 计算机是美国人发明的,所以一个字节可以表示所有字符了,所以ASCII(一个字节)编码就成为美国人的标准编码

  3. 但是ASCII处理中文明显是不够的,中文不止255个汉字,所以中国制了GB2312编码,用两个字节表示一个汉字。GB2312还把ASCII包含进去了,同理,日文,韩文等等上百个国家为了解决这个问题就都发展了一套字节的编码,标准就越来越多,如果出现多种语言混合显示就一定会出现乱码

  4. 于是unicode出现了,将所有语言统一到一套编码里

  5. 看一下ASCI和unicode编码:

  • 字母A 用ASCI编码十进制是65,二进制0100 0001
  • 汉字“中”已近超出了ASCII编码的范围,用unicode编码是20013 二进制是01001110 00101101
  • A用unicode编码只需要前面补0二进制是00000000 0100 0001
  1. 乱码问题解决了,但是如果内容全是英文,unicode编码比ASCI需要多 一倍的存储空间,同时如果传输需要多一倍的传输。

  2. 所以出现了可变长的编码“utf-8”,把英文变长一个字节,汉字3个字节。特别生僻的变成4-6字节,如果传输大量的英文,utf8作用就很明显了

一、windows下环境演示

C:\Users\zhangyy49>python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:24:40) [MSC v.1500 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> test_str = "abc"
>>> test_unicode = u"abc"
>>> test_str.encode("utf8")
'abc'
>>> test_unicode.encode("utf8")
'abc'
>>> test_str2 = "中文"
>>> test_unicode2 = u"中文"
# python字符串在内存中是用unicode编码的
>>> test_str2.encode("utf8")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd6 in position 0: ordinal not in range(128)
>>> test_unicode2.encode("utf8")
'\xe4\xb8\xad\xe6\x96\x87'
# decode作用是为了让其它编码格式转变为unicode编码,windows下test_str2编码是gb2312
>>> test_str2.decode("gb2312").encode("utf8")
'\xe4\xb8\xad\xe6\x96\x87'
>>>

二、linux下环境演示

[root@slave2 ~]# python
Python 2.7.5 (default, Aug  4 2017, 00:39:18)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> test_str = "中文"
# linux下默认test_str的编码是utf8编码
>>> test_str.decode("utf8").encode("utf8")
'\xe4\xb8\xad\xe6\x96\x87'
>>> test_str.encode("utf8")
Traceback (most recent call last):File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
>>> import sys
>>> sys.getdefaultencoding()
'ascii'

encode必须保证前面是unicode字符串,如果直接对字符串test_str直接encode的话,会先调用默认的编码进行decode,而默认的编码的是ascii,对中文转换成ascii会报错,所以就会出现如上错误

转载于:https://my.oschina.net/zhangyangyang/blog/1571021

Python编码详解相关推荐

  1. Python字符编码详解

    Python字符编码详解 转自http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html Python字符编码详解 本文简单介绍了各种常用的 ...

  2. 转1:Python字符编码详解

    Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...

  3. python one hot编码_对python sklearn one-hot编码详解

    one-hot编码的作用 使用one-hot编码,将离散特征的取值扩展到了欧式空间,离散特征的某个取值就对应欧式空间的某个点 将离散特征通过one-hot编码映射到欧式空间,是因为,在回归,分类,聚类 ...

  4. 【python】详解类class的继承、__init__初始化、super方法

    原文链接; https://blog.csdn.net/brucewong0516/article/details/79121179?utm_medium=distribute.pc_relevant ...

  5. Python2.7字符编码详解

    Python2.7字符编码详解 目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3. ...

  6. Python数据分析详解

    Python数据分析详解 数据分析概述 python在数据分析方面有哪些优势 Python不受数据规模的约束,能够处理大规模数据. Python的sklearn库提供了丰富的数据挖掘和人工智能方法,为 ...

  7. 计算机编程种常见的几种编码详解

    计算机编程种常见的几种编码详解 其实计算机编程离不开编码 但是大多数都不能真正全面了解各种编码 今天就来好好和几位编码熟悉熟悉 一.字符.字符集和字符编码方式 字符:字符是抽象的最小文本单位.它没有固 ...

  8. 字符编码详解及利用C++ STL string遍历中文字符串

    作者:非妃是公主 专栏:<笔记><C++> 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成.--曾国藩 文 ...

  9. 【2023年第十一届泰迪杯数据挖掘挑战赛】B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一

    相关链接 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 建模及python代码详解 问题一 [2023年第十一届泰迪杯数据挖掘挑战赛]B题:产品订单的数据分析与需求预测 ...

最新文章

  1. 模拟一个简单计算器_阅读模拟器的简单介绍
  2. Hook技术之4 在自己的进程中注入一个Dll到别人的进程
  3. Armadillo脱壳练习笔记(一)
  4. linux两台服务器之间文件/文件夹拷贝
  5. 给采购凭证分配合作伙伴方案
  6. spring boot配置文件【application.yml】常见问题之一,未添加空格
  7. LeetCode:面试题40. 最小的k个数
  8. 高能!8段代码演示Numpy数据运算的神操作
  9. hadoop: hbase1.0.1.1 伪分布安装
  10. jenkins 设置 gitlab web hooks
  11. 摩托车电动化,一场千亿美元的新战争
  12. python 员工考勤_python-01实现考勤表添加与删除
  13. 常见的总线通信方式及其特点
  14. 向上的箭头 html,HTML中利用div+CSS实现简单的箭头图标
  15. 国产手机会使用鸿蒙,小米等国产手机会使用鸿蒙系统吗?
  16. 标识符---概述及组成规则
  17. 数据库系统概论中国人民大学MOOC第一章数据库系统知识点总结(2) 层次结构- 网状结构-关系结构数据的完整性约束条件单向链接 双向链接 环状链接 向首链接
  18. Android要ios王者,王者荣耀怎么转区 安卓转苹果需要什么要求
  19. 快速保存网页中所有图片的方法
  20. 网站排名优化快排SEO网站源码

热门文章

  1. 孤零零好可怜的光棍节
  2. C# 中的 gdi 而不是 gdi+
  3. iphone开发我的新浪微博客户端-用户登录账号删除篇(1.6)
  4. 访问量冲破1000大关,截图庆祝!
  5. 个人课中所学vlan相关知识整理
  6. zabbix的源码安装
  7. CentOS查看CPU,内存,位数行等信息命令
  8. Armchart Js版属性学习与总结
  9. Firebird数据库的Select语句
  10. tomcat 后台 getshell