Python的编码和解码

在不同的国家,存在不同的文字,由于现在的软件都要做到国际化通用,所以必须要有一种语言或编码方式,来实现各种编码的解码,然后重新编码。

在西方国家,没有汉字,只有英文,所以最开始使用的是ASCII编码,只有96个元素,所以用8位(1字节)就能完全表示,但是无法解析中文。

中国有汉字,所以在计算机的发展史上,出现了GB2312、GB18032、GBK等多种编码方式,在汉字上以2个字节存放。

为了能够实现通用,出现了一种标准的编码方式,unicode编码,在unicode编码中,所有的字符/汉字的表示,都用2个或2个以上的字节,比如英文字符,就是2个字节,汉字是2个或4个字节。对于西方国家来说,以前1个字节能够表示的,现在需要2个字节,所占用的空间翻倍了。所以这个时候就出现了unicode的扩展集,utf-8。

Utf-8在表示英文字符上,还是保留1个字节的表示方法,在表示汉字上,使用3个字节来表示。

由于unicode才是所有国家通用的计算机编码方式,所以在不同的编码之间的转换,必须是要先经过unicode,才能再进行编码成其他的编码,比如uft-8、GBK等。

Utf-8/gbk----------------------decode-----------------àunicode

Unicode------------------------encode----------------àutf-8/gbk

在python中使用的默认编码是unicode,所以在python中创建的任何对象,默认的编码方式都是unicode,不能再进行decode,只能进行encode操作。而在文件头部声明的编码方式,只是为了表明,这个文件的编码方式是哪一种,在不同的解释器上运行,编码方式是跟解释器有关。

Python的编码和解码的更多相关文章

  1. 【转】python 字符编码与解码——unicode、str和中文:UnicodeDecodeError: 'ascii' codec can't decode

    原文网址:http://blog.csdn.net/trochiluses/article/details/16825269 摘要:在进行python脚本的编写时,如果我们用python来处理网页数据 ...

  2. python base64编码和解码图片

    简介 在实际项目中,可能需要对图片进行大小的压缩,较为常见的方法则是将图片转换为base64的编码,本文就python编码和解码图片做出一定的介绍. 代码 import base64 import o ...

  3. python之编码与解码、is 与==的区别

    一.编码与解码 编码的过程其实就是采用一定的编码格式将unicode字符转换成str字符的过程 非ASCII码字符按字节为单位被编码成十六进制转义字符 解码采用的编码格式跟设置和环境有关 ascii ...

  4. python之编码与解码

    编码 字符串被当作url提交时会被自动进行url编码处理,在python里也有个urllib.urlencode的方法,可以很方便的把字典形式的参数进行url编码.当url地址含有中文或者“/”的时候 ...

  5. Python基础-编码与解码

      一.什么是编码 编码是指信息从一种形式或格式转换为另一种形式或格式的过程. 在计算机中,编码,简而言之,就是将人能够读懂的信息(通常称为明文)转换为计算机能够读懂的信息.众所周知,计算机能够读懂的 ...

  6. 【转】python基础-编码与解码

    [转自:https://www.cnblogs.com/OldJack/p/6658779.html] 一.什么是编码 编码是指信息从一种形式或格式转换为另一种形式或格式的过程. 在计算机中,编码,简 ...

  7. python之编码和解码

    编码: 1. ascii. 有: 数字, 字母, 特殊字符. 8bit 1byte 128 最前面是0 2. gbk. 包含: ascii, 中文(主要), 日文, 韩文, 繁体文字. 16bit, ...

  8. python 元组编码和解码问题

    先看一个例子: (u'agentEnum', True, '200', {u'msg': u'\u6210\u529f', u'code': 1}) 在2.7.15版本中,如果有下面代码: def f ...

  9. python字符编码与解码 unicode,str

    解释以下几个问题: (1)python2中str和unicode是两种字符串类型,与字符编码方式是什么关系? (2)str和unicode是怎么相互转换的? (3)'\x...':'\u...', ' ...

随机推荐

  1. Typora 快捷键

    今天学习了一下这个工具.很轻便,很好用的. 无序列表:输入-之后输入空格 有序列表:输入数字+“.”之后输入空格 任务列表:-[空格]空格 文字 标题:ctrl+数字 表格:ctrl+t 生成目录:[ ...

  2. (转)聊聊Greenplum的那些事

    开卷有益——作者的话 有时候真的感叹人生岁月匆匆,特别是当一个IT人沉浸于某个技术领域十来年后,蓦然回首,总有说不出的万千感慨. 笔者有幸从04年就开始从事大规模数据计算的相关工作,08年作为Gree ...

  3. 【腾讯云服务器】基于centos7搭建ftp服务器(vsftpd)

    该博客分为三部分设置,1.ftp服务器搭建.2.防火墙设置  3.腾讯云安全组 一.ftp服务器搭建 1.1  安装vsftpd yum install vsftpd -y 1.2 启动vsftpd服 ...

  4. java每日一总结

    一, 1.安装jdk时路径中不能有空格或者中文. 二, 1.进入文件夹:cd+文件夹名称. 2.进入多级文件夹:cd+文件夹1\文件夹2\文件夹3. 3.返回上一级:cd 空格+... 4.返回根路径 ...

  5. 我认知的javascript之函数调用

    今天刚好周六没事,又由于工作的原因导致早上醒来就睡不着,无聊之下,就想到了 js 的function调用问题.当然,网上也是对javascript的一些事情说得很透了,但我觉得还是有必要把自己的想法说 ...

  6. new 和 newInstance 的区别

    初始化一个类,生成一个实例的时候:newInstance() 和 new 有什么区别? 用newInstance与用new是区别的,区别在于创建对象的方式不一样,前者是使用类加载机制,那么为什么会有两 ...

  7. 使用opencv进行简单的手势检测[by Python]

    代码参考于:https://github.com/rainyear/lolita/issues/8 简单的手势识别,基本思路是基于皮肤检测,皮肤的颜色在HSV颜色空间下与周围环境的区分度更高,从RGB ...

  8. docker 安装 fastdfs

    fastdfs 安装 //1.拉取镜像 docker pull morunchang/fastdfs //2.启动tracker docker run -d --name tracker --net= ...

  9. Netstat 常用命令--备忘录

    Netstat 用于显示与IP .TCP .UDP 和ICMP 协议相关的统计数据,一般用于检验本机各端口的网络连接情况. 常用参数 -a (all)显示所有选项,默认不显示LISTEN相关-t (t ...

  10. yidiandian

    hzwer libreoj (需要拿新版的打开)