python unicode类型,python3 unicode编码转换中文

  python unicode类型,python3 unicode编码转换中文

  字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

  decode的作用是把其他代码编码的字符串转换成unicode代码,比如str1.decode(gb2312 ),意思是把gb2312编码的字符串转换成unicode代码。

  encode的作用是将unicode编码转换成其他编码字符串,比如str2.encode(gb2312 ),意思是将unicode编码字符串str2转换成gb2312编码。

  所以在转码的时候,首先要了解字符串str是什么编码,然后解码成unicode,再编码成其他编码。

  中代码字符串的默认编码与代码文件本身的编码一致。

  例如s=中文

  如果在utf8文件中,字符串是utf8代码,如果在gb2312文件中,其代码是gb2312。

  在这种情况下,为了执行编码转换,需要首先使用decode方法将其转换为unicode编码,然后使用encode方法将其转换为其他编码。通常,当没有指定具体的编码方法时,使用系统的默认编码来创建代码文件。

  如果字符串是这样定义的:s=u 中文

  字符串的编码被指定为unicode,即python的内部编码,与代码文件本身的编码无关。因此,在这种情况下,我们只需要直接使用encode方法将其转换为指定的代码。

  如果一个字符串已经是unicode了,再解码就错了,所以通常需要判断它的编码方式是不是unicode:

  Isinstance(s,unicode)#) #用于确定是否为unicode。

  以非编码编码的形式用str编码会报错。

  如何获取系统的默认代码?

  #!/usr/危机之花卷/env python

  #编码=utf-8

  导入系统

  printsys.getdefaultencoding()

  这个程序在英文WindowsXP上的输出是ascii。

  在某些IDE中,字符串的输出总是出现乱码甚至错误,这其实是由于IDE本身的结果输出控制台无法显示字符串的编码,而不是程序本身的问题。

  例如,在UliPad中运行以下代码:

  S=u 中文

  打印s

  是:unicode编码器错误:“ascii”编解码器无法对位置0-1中的字符进行编码:序号不在范围内(128)。这是因为英文WindowsXP上的UliPad的控制台信息输出窗口是按照ascii编码输出的(英文系统默认编码是ascii),而上面代码中的字符串是Unicode编码,所以输出有错误。

  将最后一句改为:打印s.encode(gb2312 )

  可以正确输出单词“中文”。

  如果最后一句改为:打印s.encode(utf8 )

  output:\ xe4 \ xb8 \ xad \ xe6 \ x96 \ x87,是控制台信息输出窗口根据ascii编码输出utf8编码字符串的结果。

  Unicode(str, gb2312 )与str.decode(gb2312 )相同,它将gb2312编码的str转换为Unicode。

  使用str。__class__查看str的编码形式。

  Python是一种容易出现编码问题的语言。于是,我按照我的理解写了下面的话。

  =首先要知道几个概念。=

  *字节:计算机数据的表示。8位二进制。可以表示无符号整数:0-255。在下文中,“字节流”用于表示由“字节”组成的字符串。

  *字符:英文字符“abc”,或中文字符“你、我、他”。人物本身不知道怎么保存在电脑里。在下文中,将避免使用“字符串”一词,而是使用“文本”。

  显示一串“字符”。

  *编码(动词):按照一定的规则(这个规则叫做:编码(名词)),“文本”转换成“字节流”。(在python中:unicode变成了str)

  *解码(动词):按照一定的规则将“字节流”转换成“文本”。(在python中:str变成unicode)

  * *实际上,计算机中表示的任何东西都需要编码。比如视频要编码然后保存在文件里,播放的时候需要解码才能观看。

  Unicode:unicode定义了一个“字符”和一个“数字”之间的对应关系,但它没有指定这个“数字”是如何存储在计算机中的。(就像在C语言中一样,整数既是

  它可以是int或short。Unicode没有指定是使用int还是short来表示“字符”)

  Utf8:unicode实现。它使用unicode定义的“字符”和“数字”映射,然后指定如何在计算机中保存这个数字。其他utf16等。

  Unicode实现。

  Gbk:类似utf8的“代码”。但是,它不使用unicode定义的“字符”和“数字”映射,而是使用另一组映射方法。此外,它还定义了如何使用

  保存在电脑里。

  =python=中的编码、解码方法

  首先要知道编码是unicode转换成str。Decode是str到unicode的转换。

  在下面,u表示unicode类型的变量,s表示str类型的变量。

  U.encode( . ))基本上总是成功的,只要你填写正确的代码。就像任何文件都可以压缩成zip文件一样。

  S.decode( . )经常出错,因为“代码”str是什么要看上下文。在解码高花卷的时候,需要确定S是用什么编码的。比如,打开压缩文本。

  确保它确实是一个zip文件,而不仅仅是一个带有伪造扩展名的zip文件。

  不推荐U.decode(),s.encode(),s.encode相当于s.decode()。默认情况下,encode()首先被编码(通常

  Ascii)在编码中转换为unicode。

  =关于#编码=utf8=

  高大的花卷轴在py文件的第一行。如果把这句话写出来,按照这个代码保存文本,那么这句话就有如下作用。

  1.让词法分析器正常工作,不要在评论里报错中文。

  2.对于U Chinese 来说,literal string可以知道两个引号中的内容是utf8编码的,然后就可以正确的转换成unicode。

  3.中文对于这样的文字字符串,你会知道中间的内容是utf8代码,然后可以正确的转换成其他代码或者unicode。

  我还没写完,先码这么多字,以后再补充。这不是维基,太麻烦了。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: