`
nanjingjiangbiao_T
  • 浏览: 2586008 次
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

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

分享到:
评论

相关推荐

    python3字符集说明.docx

    Python3支持多种字符集,包括ASCII、Unicode和UTF-8等。 ASCII字符集是最早的字符集之一,它只包含128个字符,包括数字、字母和一些特殊字符。ASCII字符集是美国信息交换标准代码,它是计算机中最常用的字符集之一。...

    haaper:在UTF-8和Tiqwah ASCII表示之间转换希伯来语,也对SAMPA IPA进行语音转换

    在标准Unicode UTF-8编码和Tiqwah * ASCII表示之间转换希伯来语,也对语音SAMPA IPA进行转换 霍珀(Håper)是挪威语的“希望”,相当于希伯来语תִקְוָה/ tiqwah /或“ tikvah”。 Tiqwah是Yannis ...

    Python字符编码转码之GBK,UTF8互转

    unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为utf8省空间 在python 3,encode编码的同时会把stringl变成bytes类型,...

    Python教程2.doc

    4.python基础 Python对大小写敏感,缩进的... "字符"ASCII "Unicode "UTF-8 " "A "01000001 "00000000 01000001 "01000001 " "中 "x "01001110 00101101 "11100100 10111000 10101101 " " " " " " Python的字符串 对于

    学习python处理python编码问题

    1.2、UTF-8,用1个至三个字节表示,表示ascii码时只占用1个字节,ascii编码是UTF-8的子集。 1.3、UTF-16,用2个字节表示,在python中,unicode的含义就是UTF-16。 二、python源文件的编码与解码,我们写的python程序...

    utf8-bom-strip:这是一个简单的代码(或函数),用于从 utf-8 文件中删除 BOM(字节顺序标记)

    它还包括一组在多种编程语言中都做同样事情的片段: Python C什么是 UTF-8 BOM 可以在某些文件的开头找到 UTF-8 BOM。 它由三个字节组成:\xEF \xBB \xBF。 这是 Unicode 字符 FEFF 的 UTF-8 编码。UTF-8 编码文件...

    Python 面试题汇总及答案详解完整版

    13 :ascii、unicode、utf-8、gbk 区别 14:字节码和机器码的区别 15:三元运算写法和应用场景 16:Python3 和 Python2 的区别 17:用一行代码实现数值交换 18:Python3 和 Python2 中 int 和 long 区别 19:xrange 和...

    python避免中文乱码的代码.docx

    这是因为Python默认使用的编码方式是ASCII码,而中文字符需要使用UTF-8等编码方式才能正确显示。为了避免中文乱码,我们需要在代码中进行一些设置。 1. 设置文件编码方式 在Python代码文件的开头,添加以下代码: ``...

    Flask 让jsonify返回的json串支持中文显示的方法

    用flask时遇到了返回字符串支持中文显示的问题,在web端显示的是utf-8的编码,而不是中文,如下图。 虽然不影响接口的读取,但是可读性太差,于是研究了一下怎么直接显示成中文。最后找到了解决方案如下,在配置中...

    第二章 自然语言处理编程基础

    默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 为源码文件指定不同的编码: # -*- coding: cp-1252 -*- 标识符 开头字符必须是字母或下划线 _ 。 标识符的其余部分由字母、数字...

    python解决汉字编码问题:Unicode Decode Error

    前言 最近由于项目需要,需要读取一个含有中文的txt文档,完了还要保存...如果对于ascii、unicode和utf-8还不了解的小伙伴,可以看之前的这篇文章关于字符串和编码 那么必须对下面这三个概念有所了解: ascii只能表示

    Python课后题答案(2018版).doc

    Python课后题答案 Python概述 填空题 1. 对象 2. 可移植 3. 字节码 4. UTF-8 判断题 1. 对 2. 对 3....在python3.x版本的源代码中,默认使 用的是UTF-8编码,从而可以很好的支持中文字符。 (3)在pyth

    Python程序设计之字符串

    UTF-8是国际通用的编码,以一个字节表示英语字符(兼容ASCII),以三个字节表示中文及其他语言,对所有国家需要使用的字符进行了编码。 GB2312/GBK是我国制定的中文编码标准,使用一个字节表示英语,两个字节表示...

    WEB渗透测试数据库

    utf-32le utf-32le-bom utf-32 utf-32-bom utf-32be utf-32be-bom utf-16be utf-16be-bom utf-8 utf-8-bom utf-16 utf-16-bom utf-16le utf-16le-bom gbk gb2312 big5 ... 例如: # 检测文件编码类型 pen.py file...

    python2.7的编码问题与解决方法

    默认的编码格式是ascii,我们可以直接修改为utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') 二、在输入输出的时候,修改编码格式 # 解码为GBK,再次编码为UTF-8 html_doc = unicode(html_doc,'GBK...

    浅谈python下含中文字符串正则表达式的编码问题

    前言 Python文件默认的编码格式是ascii ,无法识别汉字,因为ascii码中没有中文。 所以py文件中要写中文...注2:python3.x的源码文件默认使用utf-8编码,可以解析中文,开头不指定也行,但为了规范和避免一些意想不到

    python抓取网页时字符集转换问题处理方案分享

    这时候需要制定字符串的编码,如果采集网页的编码是gb2312,而我们的数据库是utf-8的,这样不做任何处理直接插入数据库可能会乱码(没测试过,不知道数据库会不会自动转码),我们需要手动将gb2312转换成utf-8。...

    MadEdit编辑器

    包括Unicode(UTF-8、UTF-16/32)、Big5、GBK以及S-JIS 支持Unicode CJK 扩展B区(Ext-B) 可进行中文繁、简体的转换 若用户输入的字符不为当前编码支持,该字符会被转换成诸如U+XXXX的Unicode格式可用正则表达式进行...

    Python中的文件操作和异常

    Python中的文件操作和异常 文章目录Python中的文件操作和异常一、文件01. 文件的概念1.1 文件的概念和作用1.2 文件的... 文本文件的编码格式4.1 ASCII 编码和 UNICODE 编码`ASCII` 编码`UTF-8` 编码格式4.2 Ptyhon 2.

    Python学习笔记(一).pdf

    基础语法 编码 编码 Python 3 源码⽂件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码⽂件指定不同的编码: # -*- coding: cp-1252 -*- 上述定义允许在源⽂件中使⽤ Windows-1252 字符集中的...

Global site tag (gtag.js) - Google Analytics