Python的ASCII, GB2312, Unicode , UTF-8区别
ASCII 是一种字符集,包括大小写的英文字母、数字、控制字符等,它用一个字节表示,范围是 0-127
Unicode分为UTF-8和UTF-16。UTF-8变长度的,最多 6 个字节,小于 127 的字符用一个字节表示,与 ASCII 字符集的结果一样,ASCII 编码下的英语文本不需要修改就可以当作 UTF-8 编码进行处理。
Python 从 2.2 开始支持 Unicode ,函数 decode( char_set )可以实现 其它编码到 Unicode 的转换,函数 encode( char_set )实现 Unicode 到其它编码方式的转换。
比如 ("你好").decode( "GB2312") 将得到 u'/u4f60/u597d',即 "你"和“好"的 Unicode 码分别是 0x4f60 和 0x597d
再用 (u'/u4f60/u597d').encode("UTF-8") 将得到 '/xe4/xbd/xa0/xe5/xa5/xbd',它是 “你好”的UTF-8编码结果。
python中使用 unicode的关键:unicode是一个类,函数unicode(str,"utf8")从utf8编码(当然也可以是别的编码)的字符串str生成 unicode类的对象,而函数unc.encode("utf8")将unicode类的对象unc转换为(编码为)utf8编码(当然也可以是别的编码)的字符串。于是,编写unicode相关程序,需要做的事情是
* 获取数据(字符串)时,用unicode(str, "utf8")生成unicode对象
* 在程序中仅使用unicode对象,对程序中出现的字符串常量都以u"字符串"的形式书写
* 输出时,可将unicode对象转换为任意编码输出,使用str.encode("some_encoding")
>>> unicode("你好", "utf8")
u'/u4f60/u597d'
>>> x = _
>>> type(x)
>>> type("你好")
>>> x.encode("utf8")
'/xe4/xbd/xa0/xe5/xa5/xbd'
>>> x.encode("gbk")
'/xc4/xe3/xba/xc3'
>>> x.encode("gb2312")
'/xc4/xe3/xba/xc3'
>>> print x
你好
>>> print x.encode("utf8")
你好
>>> print x.encode("gbk")
???
以上是测试结果(Ubuntu 6.06,locale为utf8),注意type(x)和type("你好")的区别。从编码上可以看出utf8编码与gbk不同。在utf8的 locale设置下,打印x按该环境变量编码(我猜我猜我猜猜猜),而打印x.encode("gbk")则是乱码。
转载声明:本文转自 http://1.vb.blog.163.com/blog/static/104546220071113105047729/
=====================================================================
推荐参考:
Python、Unicode和中文
http://blog.csdn.net/lwl_ls/archive/2007/08/21/1753284.aspx
UNICODE,GBK,UTF-8区别
http://blog.csdn.net/Sunboy_2050/archive/2010/12/16/6080008.aspx
转载于:https://www.cnblogs.com/mixer/archive/2010/12/21/2448110.html
Python的ASCII, GB2312, Unicode , UTF-8区别相关推荐
- ASCII,Unicode,UTF-8,GB2312一些关于编码的理解
2019独角兽企业重金招聘Python工程师标准>>> 字符编码:ASCII,Unicode,UTF-8,GB2312 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件 ...
- ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)
ASCII.Unicode.GBK和UTF-8字符编码的区别联系 转载自:http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...
- 常见三种字符编码的区别:ASCII、Unicode、UTF-8
什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...
- 计算机网络-字符编码的由来(为什么会有乱码,ASCII、Unicode、GBK和UTF-8字符编码区别)
为什么我们在网络中传输数据,需要指定字符编码,例如使用UTF-8.GBK等编码.那么字符编码到底是什么?以前我也很困惑这个问题,但是学习了计算机网络后我们知道,由于底层电路的设计本质,只能是识别0和1 ...
- ASCII编码和Unicode编码的区别和联系
编码背景 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进 ...
- ASCII、Unicode、UCS-2、UTF-8 等字符编码规则的区别与联系
目录 一.前言 二.补充(bit & Byte) 三.ASCII(美国信息交换标准代码) 四.各国独立的语言编码 五.Unicode(统一码.万国码) 1. Unicode字符集 2. Uni ...
- python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法
目的 将一个字符转化为相应的ASCII或Unicode码,或相反的操作. 方法 对于ASCII码(0~255范围) 代码如下: >>> print ord('A') 65 >& ...
- 字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别
字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别 关于字符编码,你所需要知道的
- ASCII编码和Unicode编码的区别
本文摘录自廖雪峰的python教程 如有侵权,请联系删除. ASCII编码是1个字节,而Unicode编码通常是2个字节. 字母A用ASCII编码是十进制的65,二进制的01000001: 字符0用A ...
最新文章
- 部署DNS服务和管理DNS
- php网站调试出现的简单问题,调试php时网站出现502的解决方法
- SAP UI5 Mock server,为什么运行时无法返回 JSON 类型的测试数据?
- 精选| 2021年9月R新包推荐(第58期)
- 苹果高通“情变”祸及所有中国 iPhone 用户!
- 学会java要多久_多长时间可以学会Java?
- Python之turtle画小狗、狮子头和小黄人
- 想知道自己的物理内存地址都是如何分配的么?
- jep3.5 java 动态公式
- 中国石油大学-《现代应用文写作》第三阶段在线作业
- 怎么禁用计算机的文件共享,怎么关闭掉电脑共享文件
- Undefined function or variable. The first assignment to a local variable determin its class.
- Unity HDRP室外场景打光流程分享(上篇)-UE4场景转Unity HDRP
- IDEA修改创建多级package包结构样式
- centos7.4启动卡在7的界面
- eclipes工具介绍及下载安装汉化
- 面试前端程序员想拿 10K,面试官说你只值8K,如何应付?
- Python for everyone chapter 1
- Android File System安卓文件系统(安卓存储分区,/data /storage /sdcard)
- echarts 实现关系图表