Python的编码详解
一. 编码介绍
计算机只能处理数字(最底层的0和1),如果要处理文本,就必须将文本转换为数字才能处理。最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以一个字节能表示的最大整数就是255(二进制11111111 = 十进制255),如果要表示更大的整数,就需要更多的字节,比如两个字节可以表示的最大整数为 65535 , 4个字节可以表示的最大整数就是 4294967295.
在计算机内存中,统一使用Unicode编码,需要保存到硬盘或者需要传输的时候,就会转换为UTF-8编码。用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再吧Unicode转换为UTF-8保存到文件:浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器。所以在很多网页的源码中会有类似于 <meta charset='UTF-8' />的信息,表示该网页使用UTF-8编码的。


- ord() # 获取字符的整数表示
- chr() # 把编码转换为对应的字符
>>> ord('a')
97
>>> chr(97)
'a'
>>> ord('你')
20320
>>> chr(20320)
'你'
由于Python的字符串类型是 str , 在内存中以 Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把 str 转换为以字节为单位的 bytes。
- encode() # 以Unicode表示的字符串通过encode()方法可以编码为指定的字节。
- decode() # 将字节变成字符串,也就是解码

# Python2.X版本
>>>u'中文'.encode('gb2312')
>>>'\xd6\xd0\xce\xc4' # Python3.X版本,统一改成了unicode编码,写不写前缀u 都是一样的,而以字节形式表示的字符串则必须加上 b 前缀 :b'xxx'。
>>>u'中文'.encode('gb2312')
>>>'\xd6\xd0\xce\xc4'
>>>'中文'.encode('gb2312')
>>>'\xd6\xd0\xce\xc4'
Python的编码详解的更多相关文章
- Python字符编码详解,str,bytes
什么是明文 “明文”是可以是文本,音乐,可以编码成mp3文件.明文可以是图像的,可以编码为gif.png或jpg文件.明文是电影的,可以编码成wmv文件.不一而足. 什么是编码?把明文变成计算机语言 ...
- 转2:Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- 转1:Python字符编码详解
Python27字符编码详解 声明 一 字符编码基础 1 抽象字符清单ACR 2 已编码字符集CCS 3 字符编码格式CEF 31 ASCII初创 311 ASCII 312 EASCII 32 MB ...
- Python字符编码详解
1. 字符编码简介 1.1. ASCII ASCII(American Standard Code for Information Interchange),是一种单字节的编码.计算机世界里一开始只有 ...
- 【转】Python字符编码详解
转自:http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 1. 字符编码简介 1.1. ASCII ASCII(American S ...
- Python字符编码详解(转)
http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html 在没有reload(sys)之前调用sys.setdefaultencoding ...
- Python 字符串方法详解
Python 字符串方法详解 本文最初发表于赖勇浩(恋花蝶)的博客(http://blog.csdn.net/lanphaday),如蒙转载,敬请保留全文完整,切勿去除本声明和作者信息. ...
- Python2.7字符编码详解
目录 Python2.7字符编码详解 声明 一. 字符编码基础 1.1 抽象字符清单(ACR) 1.2 已编码字符集(CCS) 1.3 字符编码格式(CEF) 1.3.1 ASCII(初创) 1.3. ...
- 《python开发技术详解》|百度网盘免费下载|Python开发入门篇
<python开发技术详解>|百度网盘免费下载|Python开发入门篇 提取码:2sby 内容简介 Python是目前最流行的动态脚本语言之一.本书共27章,由浅入深.全面系统地介绍了利 ...
随机推荐
- Redis只作为缓存,不做持久化的配置
#1.配置缓存内存限制和清理策略 #作为缓存服务器,如果不加以限制内存的话,就很有可能出现将整台服务器内存都耗光的情况,可以在redis的配置文件里面设置: #example: # 限定最多使用1.5 ...
- RotbotFrameWork接口测试
一.添加接口测试Library 二.参数说明 三.关键字使用说明 Set Varibae: 参数化接口地址 Connect To Databse Using Custom Param: 连接数据库(需 ...
- p4042 [AHOI2014/JSOI2014]骑士游戏
传送门 分析 我们发现对于一个怪物要不然用魔法代价使其无需考虑后续点要么用普通攻击使其转移到他所连的所有点上且所有边大于0 所以我们可以先将一个点的最优代价设为魔法攻击的代价 之后我们倒着跑spfa求 ...
- code2039 骑马修栏杆
欧拉通路: find_circuit(结点i){ 当结点i有邻居时 选择任意一个邻居j: 删除边(i,j)或者做访问标记: find_circuit(结点j): 输出或存储节点i: } 本题注意点的编 ...
- MapReduce的初次尝试
====前提: 搭建好集群环境(zookeeper.hadoop.hbase). 搭建方法这里就不进行介绍了,网上有很多博客在介绍这些. ====简单需求: WordCount单词计数,号称Hadoo ...
- [GO]tcp网络通信和实现
服务端的代码 package main import ( "net" "fmt" ) func main() { //监听 listener, err := n ...
- java8 Lambda表达式的10个例子(转)
原文:http://jobar.iteye.com/blog/2023477 Java8中Lambda表达式的10个例子 例1 用Lambda表达式实现Runnable接口 Java代码 收藏代码// ...
- STL之erase用法
vector::erase():从指定容器删除指定位置的元素或某段范围内的元素 vector::erase()方法有两种重载形式 如下: 1.iterator erase(iterator _Wher ...
- java解决跨域
方法中response.setHeader("Access-Control-Allow-Origin", "https://ding.taozugong.com" ...
- 34 输入3个数a,b,c,按大小顺序输出
题目:输入3个数a,b,c,按大小顺序输出 public class _034Sorting { public static void main(String[] args) { sorting(); ...