python 字符编码练习
通过下面的练习,加深对python字符编码的认识
# \x00 - \xff 256个字符
>>> a = range(256)
>>> b = bytes(a) # 不用参数encoding
>>> b
b'\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff'
>>> b.decode('utf-8') # 报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 128: invalid start byte
>>> b.decode('unicode-escape') #正常
'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff'
# 题外:上面几句等价于下面一句
>>> ''.join(list(map(chr, range(256))))
'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff'
>>> a = 'abc'
>>> a
'abc'
>>> b = bytes(a, encoding='utf-8') # 方式一:把 'abc' 变为字节数据
>>> b
b'abc'
>>> c = a.encode('utf-8') # 方式二:把 'abc' 变为字节数据,与一等价
>>> c
b'abc' # \x00 - \xff 256个字符,bytearray方式
>>> a = range(256)
>>> b = bytearray(a)
>>> b
bytearray(b'\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff')
>>> b.decode('unicode-escape')
'\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff' # 中文编码
>>> a = '中'
>>> a
'中'
>>> b = a.encode('gbk')
>>> b
b'\xd6\xd0'
>>> c = a.encode('utf-8')
>>> c
b'\xe4\xb8\xad'
>>> d = a.encode('unicode-escape')
>>> d
b'\\u4e2d'
>>> e = a.encode('cp936')
>>> e
b'\xd6\xd0' # 中文解码
>>> a.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'str' object has no attribute 'decode' >>> b.decode()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte >>> b.decode('utf-8')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd6 in position 0: invalid continuation byte >>> b.decode('gbk')
'中'
>>> b.decode('cp936') # gbk编码的可以cp936解码,反之不行。因为gbk是cp936的一个子集
'中'
python官方支持的编码格式大全:https://docs.python.org/3/library/codecs.html#standard-encodings
python 字符编码练习的更多相关文章
- Python字符编码讲解
声明:本文参考 Python字符编码详解 在计算机中我们不管用什么语言和程序,最终数据在计算机中的都是字节码(也就是01形式)的形式存在的,如果 计算机直接把字节码显示在屏幕上,很明显一般人看不懂字节 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- Python字符编码补充
字符编码: Python字符编码贯穿Python学习的始终,现在应用的是Python2中字符编码的问题是很多的. 这次是要彻底解决Python字符编码的问题!!! 1 字符编码的发展过程: 1 .AS ...
- python --- 字符编码学习小结(二)
距离上一篇的python --- 字符编码学习小结(一)已经过去2年了,2年的时间里,确实也遇到了各种各样的字符编码问题,也能解决,但是每次都是把所有的方法都试一遍,然后终于正常.这种方法显然是不科学 ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- python字符编码(二)
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
随机推荐
- iOS多线程-02-GCD
简介 GCD(Grand Center Dispatch)是Apple为多核的并行运算提出的解决方案,纯C语言 更加适配多核处理器,且自动管理线程的生命周期,使用起来较为方便 GCD通过任务和队列实现 ...
- C# 两个Object比较
C#两个Object进行比较,Object里只是简单属性,不存在层级关系还比较好处理,如果遇到多层级的就有点麻烦. 1.简单Object比较 /// <summary> /// 比较字段 ...
- vi, vim 基本使用(1)
本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!vi 编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和 ...
- js中 字符串与Unicode 字符值序列的相互转换
一. 字符串转Unicode 字符值序列 var str = "abcdef"; var codeArr = []; for(var i=0;i<str.length;i++ ...
- js日期时间函数
日期时间脚本库方法列表 Date.prototype.isLeapYear 判断闰年Date.prototype.Format 日期格式化Date.prototype.DateAdd 日期计算Date ...
- Redis下载及安装部署
官网介绍:Redis is an open source advanced key-value store.It is often referred to as a data structure se ...
- CSS纯样式实现箭头、对话框等形状
在使用第三方框架bootstrap的时候,本以为其是图片实现的小箭头,后来使用开发工具查看是用CSS来实现的,现记录如下: 之前都没仔细去观注过其原理,都是拿来使用,在实现小箭头之前需要了解下CSS的 ...
- hdu 1398 Square Coins(简单dp)
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Pro ...
- db2 常用命令(二)
1. 打开命令行窗口 #db2cmd 2. 打开控制中心 # db2cmd db2cc 3. 打开命令编辑器 db2cmd db2ce ======脚本文件操作命令======= -- 执行脚本 ...
- Hadoop Resource
http://www.aiopass4sure.com/cloudera-exams/ccd-410-exam-questions/which-process-describes-the-lifecy ...