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区别相关推荐

  1. ASCII,Unicode,UTF-8,GB2312一些关于编码的理解

    2019独角兽企业重金招聘Python工程师标准>>> 字符编码:ASCII,Unicode,UTF-8,GB2312 从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件 ...

  2. ASCII、Unicode、GBK和UTF-8字符编码的区别联系(转载)

    ASCII.Unicode.GBK和UTF-8字符编码的区别联系 转载自:http://dengo.org/archives/901 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同 ...

  3. 常见三种字符编码的区别:ASCII、Unicode、UTF-8

    什么是字符编码? 计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255( ...

  4. 计算机网络-字符编码的由来(为什么会有乱码,ASCII、Unicode、GBK和UTF-8字符编码区别)

    为什么我们在网络中传输数据,需要指定字符编码,例如使用UTF-8.GBK等编码.那么字符编码到底是什么?以前我也很困惑这个问题,但是学习了计算机网络后我们知道,由于底层电路的设计本质,只能是识别0和1 ...

  5. ASCII编码和Unicode编码的区别和联系

    编码背景 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(二进 ...

  6. ASCII、Unicode、UCS-2、UTF-8 等字符编码规则的区别与联系

    目录 一.前言 二.补充(bit & Byte) 三.ASCII(美国信息交换标准代码) 四.各国独立的语言编码 五.Unicode(统一码.万国码) 1. Unicode字符集 2. Uni ...

  7. python字符编码转换_Python字符和字符值(ASCII或Unicode码值)转换方法

    目的 将一个字符转化为相应的ASCII或Unicode码,或相反的操作. 方法 对于ASCII码(0~255范围) 代码如下: >>> print ord('A') 65 >& ...

  8. 字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别

    字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别 关于字符编码,你所需要知道的

  9. ASCII编码和Unicode编码的区别

    本文摘录自廖雪峰的python教程 如有侵权,请联系删除. ASCII编码是1个字节,而Unicode编码通常是2个字节. 字母A用ASCII编码是十进制的65,二进制的01000001: 字符0用A ...

最新文章

  1. 部署DNS服务和管理DNS
  2. php网站调试出现的简单问题,调试php时网站出现502的解决方法
  3. SAP UI5 Mock server,为什么运行时无法返回 JSON 类型的测试数据?
  4. 精选| 2021年9月R新包推荐(第58期)
  5. 苹果高通“情变”祸及所有中国 iPhone 用户!
  6. 学会java要多久_多长时间可以学会Java?
  7. Python之turtle画小狗、狮子头和小黄人
  8. 想知道自己的物理内存地址都是如何分配的么?
  9. jep3.5 java 动态公式
  10. 中国石油大学-《现代应用文写作》第三阶段在线作业
  11. 怎么禁用计算机的文件共享,怎么关闭掉电脑共享文件
  12. Undefined function or variable. The first assignment to a local variable determin its class.
  13. Unity HDRP室外场景打光流程分享(上篇)-UE4场景转Unity HDRP
  14. IDEA修改创建多级package包结构样式
  15. centos7.4启动卡在7的界面
  16. eclipes工具介绍及下载安装汉化
  17. 面试前端程序员想拿 10K,面试官说你只值8K,如何应付?
  18. Python for everyone chapter 1
  19. Android File System安卓文件系统(安卓存储分区,/data /storage /sdcard)
  20. echarts 实现关系图表

热门文章

  1. jQuery的preventDefault()
  2. 深入浅出数据库设计三范式
  3. linux下的嵌入式开发技能(嵌入式工程师必备)
  4. Ajax/REST 第1部分
  5. UML 中各种图形重要性的排行
  6. Salted Password Hashing
  7. 使用srvany.exe将任何程序作为Windows服务运行
  8. 三次握手,四次挥手的过程??为什么三握??
  9. Android7.0 Doze模式分析(一)Doze介绍 amp; DeviceIdleController
  10. 云中计算将软件服务外包带入3.0时代