首页 > 编程语言 >Python字符串的encode与decode

Python字符串的encode与decode

时间:2023-03-26 21:33:34浏览次数:38  
标签:编码 转换成 Python gb2312 decode encode unicode 字符串


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

 

decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。

 

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

 

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

 

如在UliPad中运行如下代码:

 

s=u"中文"
print s

 

会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。

 

这是因为UliPad在英文WindowsXP

 

将最后一句改为:

 

print s.encode('gb2312')

则能正确输出“中文”两个字。

若最后一句改为:

 

print s.encode('utf8')

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

 

 

另外,代码中字符串的默认编码与代码文件本身的编码一致,如:s='中文'

 

如 果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。 这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。

 

通常,在没有指定特 定的编码方式时,都是使用的系统默认编码创建的代码文件。 (看最后)

 

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

 

则该字符串的编码就被指定为unicode了,即python的内部编码,而与代码文件本身的编码无关。因此,对于这种情况做编码转换,只需要直接使用encode方法将其转换成指定编码即可。

 

如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:

isinstance(s, unicode)  #用来判断是否为unicode

 

 

 


下面给出用Python获取系统默认编码的例子:

#!/usr/bin/env python
#coding=utf-8
"""
    获取系统默认编码
"""
import sys
print sys.getdefaultencoding()

该段程序在英文WindowsXP上输出为:

ascii)

 

 

标签:编码,转换成,Python,gb2312,decode,encode,unicode,字符串
From: https://blog.51cto.com/u_8895844/6150861

相关文章

  • Python 列表 list 数组 array
    Python中的列表(list)类似于C#中的可变数组(ArrayList),用于顺序存储结构。 创建列表 sample_list=['a',1,('a','b')]Python列表操作 sample_list=['a','b',0,1,3]得到......
  • Python实例讲解 -- 定时播放 (闹钟+音乐)
    自己写的闹钟,只可以播放wav格式的音频。 importtimeimportsyssoundFile='sound.wav'not_executed=1defsoundStart():ifsys.platform[:5]=='linux':......
  • Python实例讲解 -- 图片处理
    虽然图像处理的最佳工具是MATLAB的图像处理工具箱,但是在进行一些“简单的”图像处理任务或者大批量的简单图像处理任务的时候,Python图像处理的方法更有优势。 1.引言: ......
  • Python实例讲解 -- 磁盘文件的操作
    在文件夹里有六十多个RM格式的视频文件,我现在需要把它们的文件名都提取出来,并去掉文件的扩展名,以便放到需要的网页里。 应该有什么软件可以完成这个简单的要求,可是一时间到......
  • 初学Python,版本如何选择?
     早在四年多以前,在我进入英才网之前,去面试过一家海归创业的公司。他们需要的是有unix开发经验的技术人员,但是因为他们当时所处的阶段对很多成熟技术人员不是很吸引,所......
  • python_数据分析与挖掘实战_洗浴事件
    importpandasaspdimportmatplotlib.pyplotaspltinputfile='./data/original_data.xls'#'./demo/data/original_data.xls'#输入的数据文件data=pd.read_e......
  • Python day03
    ##day3##今日内容1.整型2.布尔类型3.字符串###内容回顾和补充###内容回顾每周写一个思维导图,罗列本周学习的知识点1.运算符补充-in-notin###......
  • python3验证手机号码
    importredefcheck_phone_right(self,phone_number):"""检测号码是否正确"""phone_number_strip=phone_number.strip()pattern=re.compile(r'^(......
  • 【Python】Flask Response返回结果封装工具类
    ✨工具类介绍封装后端获取到的数据在blueprints中可以直接通过returnresponse(code=200,data=data,message='登陆成功')形式返回给前端✨简单封装工具类fromflask......
  • python绘制wav音频文件波形图
    python绘制wav音频文件波形图 #-*-coding:utf-8-*-importwaveimportpylabasplimportnumpyasnpprint('working')#打开wav文档file=wave.open(r"02.wa......