Python字符串编码

字符串编码的前世今生

1. 一个字节由8个bit组成,所以1个字节能表示的最大数为255;

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

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

4.这时候出现了Unicode编码,将所有的标准统一到了一套编码里面;

5.那ASCII编码和Unicode编码之间是如何进行转换的?下面是具体的转换方法:

  5.1 字母A用ASCII编码表示的十进制是65,二进制即为0100 0001

  5.2 汉字“中”已经超出了ASCII编码的范围,用Unicode编码十进制是20013 二进制是0100 1110 0010 1101

  5.3 A字母用Unicode编码时只需要在前面补上0  即为0000 0000 0100 0001

6.乱码问题解决了,但是同时又出现了一个新的问题,如果全部是英文字母的话,Unicode编码比ASCII编码多消耗一倍的内存,同时网络传输的时候也多消耗一倍的带宽;

7.所以这个时候出现了长度可变化的utf-8的编码。

字符与字节

1byte = 8bit
1KB = 1024 bytes
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

ASCII编码: 一个英文字母占据一个字节的空间,一个中文字母占据两个字节的空间;

utf-8编码: 一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占据三个字节,英文标点占据一个字节;

Unicode编码: 一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占据两个字节,英文标点占据两个字节。

Unicode编码为GB2312编码  utf-8编码 ASCII等编码的一个父级编码,那这些子编码之间子在需要相互转换的时候就需要借助父级编码Unicode。子编码是可以直接转换为父级编码,然后父级编码转换为另一种类型的子编码。

Python2和Python3字符编码存在的问题

获取默认编码格式:

>>> import sys
>>> sys.getdefaultencoding()

我们发现在python2中默认的编码格式是 'ascii' 编码,在python3中默认的编码格式为utf-8

第一步:在终端输入python进入python2的开发环境

第二步:s = "中国"   # 获取s的值拿到  '\xe4\xb8\xad\xe5\x9b\xbd'  说明此时的ASCII编码无法识别汉字

Python2和Python3字符编码问题的解决方案

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
reload(sys)
sys.setdefaultencoding(defaultencoding)

python第一篇:Python 字符串编的更多相关文章

  1. python第一篇-------python介绍

    一.python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,Guido开始写Python语言的编译器.Python这个名字,来自Guido所 ...

  2. 第一篇:python基础

    python基础   python基础 本节内容 python起源 python的发展史 为什么选择python3 第一个python程序 变量定义 表达式和运算符 用户输入 流程控制 判断 流程控制 ...

  3. Python 第一篇:python简介和入门

    一.python简介 1.python下载地址:https://www.python.org/downloads/ Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆 ...

  4. Python开发 第一篇 python的前世今生

    Python前世今生 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC ...

  5. 进击python第一篇:相遇

    1.第一句Python代码 在 当前目录下创建 hello.py 文件,内容如下: print "hello,world!" 执行 hello.py 文件,即: python he ...

  6. Python基础第一篇-------python的介绍

    一.python的介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间,决心开发一个新的脚本 ...

  7. 第一篇 Python安装与环境变量的配置

    开发语言有很多种,为什么选Python? 先对各种开发语言做个初识和分类如下:高级语言:Python Java.PHP C# Go ruby C++... ---> 字节码低级语言:C.汇编 - ...

  8. Python第一部分--Python简介+第一个程序+Python2和Python3介绍 001-016

    一.Python起源 1.1 解释器(科普) 1.2Python的设计目标 1.3 Python的设计哲学 02.为什么学Python? 代码量少 同一样问题,不用的语言解决,代码量差距还是很多的,一 ...

  9. 第一篇 Python图片处理模块PIL(pillow)

    本篇包含:一.Image类的属性:1.Format   2.Mode   3.Size    4.Palette    5.Info                   二.类的函数:1.New   ...

随机推荐

  1. MVC进阶学习--View和Controller之间的数据传递(二)

    1. 使用Request.Form MVC 将页面简单化,与WebForm中的事件机制完全不同,就和普通的html标签表单提交没有任何区别(当然WebForm中的事件机制其实也是表单提交).在表单提交 ...

  2. Arbitrage - poj 2240 (Bellman-ford)

      Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 17374   Accepted: 7312 Description Ar ...

  3. linux .vimrc的设置!

    0.记得在配之前先下载vim.不同的版本下载vim使用不同命令 ubuntu使用sudo apt-get install vim 1.vi ~/.vimrc  打开当前用户下的vim的配置文件(修改完 ...

  4. label 标签的用法,点label选中单选、复选框或文本框

    <label>拥有的权限</label> <label class="checkbox" id="privilege_id" st ...

  5. Android Studio 默认的快捷键

    参考资料: 1.http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/ Action Mac OSX Win/Linux ...

  6. onCreate中获得控件的大小

    @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setC ...

  7. ios 即时通讯 xmpp

    [iPhone高级] 基于XMPP的IOS聊天客户端程序(XMPP服务器架构) http://blog.csdn.NET/kangx6/article/details/7739828 [iPhone高 ...

  8. Linux下SVN安装与权限管理

    cat /etc/redhat-release //查看系统版本号 CentOS release 7.1 (Final) 这里我们採用yum源安装方式: 1.安装svn yum install sub ...

  9. poj2349

    Arctic Network Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 0   Accepted: 0 Descript ...

  10. linux c编程:系统数据文件和信息

    linux系统相关的文件信息包含在/etc/passwd文件和/etc/group中.每次登录linux系统以及每次执行ls -l命令时都要使用口令文件.这些字段都包含在<pwd.h>中定 ...