`
yimi128
  • 浏览: 56087 次
  • 来自: ...
社区版块
存档分类
最新评论

[转]python中的字符编码

阅读更多

        python中的unicode是一种内置类型,用来表示unicode字符串。其使用的编码方式在编译时决定,可以选择使用UCS-2或者UCS-4表示。(在gentoo linux上,可以通过ucs2这个USE flag来控制)

 

        由于unicode是一种内置类型,对其序列化(比如存盘、通过socket发送等)时必须要先将其编码成字节序列,也即python中的string类型。编码使用unicode的encode方法,其参数为编码名称,在encodings包中定义,encodings包中的alias.py文件定义了一些编码的别称。如调用encode时未指定参数,则使用sys.getdefaultencoding()的返回值编码。该值默认为'ascii',可以在$PYTHONHOME/sitecustom.py中使用sys.setdefaultencoding()修改。

        在某些操作中会进行隐式的编码转换,比如file.write()方法可以接受string参数也可以接受unicode参数。在接受unicode参数时就会自动采用sys.getdefaultencodings()的返回值将其编码为字节序列。

 

        由于默认编码为'ascii',这种编码只能表示unicode中前128个字符,在碰到包含其他字符的unicode对象时就会发生exception。可以通过两种方式解决这个问题:
1、修改sitecustom.py,将默认编码改为可以处理更大字符集的编码,如gb18030或utf8。
2、在代码中显式使用恰当的编码调用encode,将unicode对象转为string对象,然后再进行处理。

        如果你的代码会给别人使用的话,推荐使用第二种方式,这样对方就不需要修改他的sitecustom.py了。但这种方法对程序的要求较高。

 

        将已编码的string还原成unicode:使用s.decode(encoding_type),或者unicode(s, encoding_type)。

 

        在源程序中表示unicode常量:使用u"your_string",解释器将根据源程序的编码类型(默认为iso8859-1,通过源程序文件的第一行或第二行可以指定,比如#--*-- encoding: utf8 --*--)将其转换为unicode对象。

 

        在控制台(console)上处理unicode:每一个console都有自己的编码,比如中文windowsxp的cmd命令行,其编码为GB18030。在linux下,通过环境变量LANG可以指定。所有对unicode的序列化操作(比如print),都将以该编码处理。

 

        wxPython中的unicode:

        wxPython分为unicode和ansi两个版本。wxPython是图形界面库,其版本只针对图形界面而言,其他部分的操作仍然按照python的方式。unicode版本中,所有返回的界面字符串均是以unicode对象来表示,而ansi版本则是以string对象来表示,其编码方式为操作系统默认编码。比如你在一个文本框中敲入"中文"二字,self.textbox.GetValue()在unicode版本返回u"中文",在ansi版本则返回GB18030编码的"中文"。

分享到:
评论

相关推荐

    Python字符编码检测库PyCharlockHolmes.zip

    **Python字符编码检测库PyCharlockHolmes** Python在处理文本数据时,字符编码是一个重要的概念,因为不同的文件和数据源可能使用了不同的字符编码方式。PyCharlockHolmes是豆瓣公司开发的一个开源项目,旨在解决...

    C语言字符串转换为Python字符串的方法

    C语言字符串转换为Python字符串是指将C语言中的字符串数据转换为Python中的字符串对象,以便在Python环境中使用。下面详细介绍了C语言字符串转换为Python字符串的方法。 使用Py_BuildValue()构建字节对象 在Python...

    python实现算术编码

    在编码之前,需要对输入文本中的每个字符或符号计算其出现的概率。这通常通过统计文本中各符号的频率来完成。在Python中,可以使用字典来存储每个符号及其对应的频率,然后计算归一化概率。 3. **编码过程** - **...

    python 数据类型 字符编码

    python培训期间笔记,对数字类型,字符串等数据类型有详细介绍,其中还有字符编码部分,无废话版

    Shannon_Python香农编码_python_shannon_香农编码_

    在信息论中,它利用字符出现的频率来构造一棵二叉树,进而为每个字符分配唯一的二进制码,使得频率高的字符编码长度短,频率低的字符编码长度长,从而达到压缩数据的目的。这种方法能够实现最优的前缀编码,即没有两...

    python统计字符串中中英文、空格、数字、标点个数

    在Python编程语言中,统计字符串中的中英文字符、空格、数字和标点符号是一项常见的任务,这在数据处理和文本分析中非常有用。本文将详细介绍如何实现这一功能,并探讨相关知识点。 首先,我们需要理解Python中处理...

    python3字符串

    本文详细介绍了Python3中字符串的基本概念、访问方式、更新方法、转义字符的使用、运算符的运用以及字符串格式化的技巧。通过这些知识点的学习,读者能够更加熟练地掌握Python中的字符串处理技巧,并能应用于实际...

    Python 十六进制整数与ASCii编码字符串相互转换方法

    十六进制整数转ASCii编码字符串 # -*- coding: utf-8 -*- import binascii #16进制整数转ASCii编码字符串 a = 0x665554 b = hex(a) #转换成相同的字符串即'0x665554' b = b[2:] #截取掉'0x' c = binascii

    Python字符编码_中文乱码.pdf

    ### Python字符编码与中文乱码问题详解 #### 一、引言 在处理中文文本时,经常遇到的一个问题是中文乱码。特别是在使用Python进行开发时,由于不同的操作系统默认编码方式不同,以及Python自身对源文件编码的处理...

    python实现字符串加密成纯数字

    本文实例为大家分享了python实现字符串加密成纯数字的具体代码,供大家参考,具体内容如下 说明:  该加密算法仅仅是做一个简单的加密,安全性就不谈了,哈哈.  算法流程: 1.字符串以utf8编码成字节数组 2.把每一个...

    Python中文本编码官方文件(howto-unicode)

    通过整个文档的内容,我们可以获得关于Unicode编码和Python处理Unicode的深入理解,包括字符编码的历史背景、Unicode的定义和编码方式,以及Python语言本身是如何支持Unicode的,包括字符串类型处理、编码转换、...

    python对象转json字符串小工具

    在Python 3中,字符串默认是Unicode编码的,而在JSON规范中,字符串必须是UTF-8编码的序列。因此,当Python的Unicode字符串被转换为JSON时,会自动进行编码。如果在源码中看到了对Unicode对象的特殊处理,可能是在...

    字符编码GB2312转UTF8+可批量转换+需安装Python+学习Python参考

    该工具用于字符编码GB2312转UTF8,可批量转换。只需将该工具放置与需要转换文件的目录下,双击运行即可。 注意:需安装Python,Python 2和3 需安装通用编码检测器,文件内有安装方法; 该工具对于入门学习Python 也...

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

    Python字符编码转换是编程过程中经常会遇到的问题,尤其是在处理多语言数据或者与不同系统交互时。本文将详细讨论Python中GBK和UTF-8两种编码格式之间的转换,并解释它们各自的特点。 首先,了解Python中的字符编码...

    Python之字符串和编码共13页.pdf.zip

    这篇13页的PDF文档,"Python之字符串和编码",很可能深入探讨了Python中的字符串对象以及如何处理不同的字符编码。 在Python中,字符串是不可变的序列,由Unicode字符组成。它们可以用来存储和操作任何文本信息,从...

    Python PEP8 编码规范中文版

    除了这些编码规范,PEP8还提到了一些编程建议,比如函数应当有说明性的注释,如果一个函数的参数或行为在标准库中有等效的功能,应当考虑引用标准库中的文档字符串。 最后,PEP8规范也指出,如果遵循规范导致代码...

    PEP8Python 编码规范

    PEP8是关于Python编码风格的规范,而如何将英文文档转成中文应当是遵循翻译原则和文档规范的问题。所以,正确理解这部分内容应该是:PEP8指导如何书写整洁的Python代码,并且在必要时如何将文档和注释用中文书写,...

    20180530_Python编码及中文乱码1

    在Python中,编码和解码涉及到Unicode、ASCII、GBK、UTF-8等不同的字符编码标准。 一、字符编码历史与发展 1. ASCII编码:最早期的字符编码,使用7位二进制,可表示128个字符,主要针对英文字符。 2. Unicode编码...

Global site tag (gtag.js) - Google Analytics