decode和encode函数_python lstrip

decode和encode函数_python lstrip字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gb2312编码的字符串str1转换成unicode编…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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

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

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

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

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

如:s=‘中文’

如果是在utf8的文件中,该字符串就是utf8编码,如果是在gb2312的文件中,则其编码为gb2312。这种情况下,要进行编码转换,都需要先用decode方法将其转换成unicode编码,再使用encode方法将其转换成其他编码。通常,在没有指定特定的编码方式时,都是使用的系统默认编码创建的代码文件。

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

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

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

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

用非unicode编码形式的str来encode会报错

如何获得系统的默认编码

#!/usr/bin/env python
#coding=utf-8
import sys
print sys.getdefaultencoding()

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

在某些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上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。

将最后一句改为:print s.encode(‘gb2312’)

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

若最后一句改为:print s.encode(‘utf8’)

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

unicode(str,‘gb2312’)与str.decode(‘gb2312’)是一样的,都是将gb2312编码的str转为unicode编码

使用str.__class__可以查看str的编码形式

下面给出一个解决乱码的通用代码:

#!/usr/bin/env python
#coding=utf-8
s="中文"

if isinstance(s, unicode):
#s=u"中文"
    print s.encode('gb2312')
else:
#s="中文"
    print s.decode('utf-8').encode('gb2312')

原文链接:https://blog.csdn.net/lxdcyh/article/details/4018054

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/185201.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 用启动易合并启动光盘图解教程

    用启动易合并启动光盘图解教程用启动易合并启动光盘图解教程发布时间:2007-04-26来源:矽谷漂移工作组嘿嘿绿盟不提供注册码,我来提供,用户:xdowns.com注册码:2566-11AC-0624-22BCultraiso,激活成功教程版下载地址:[url]http://www.xdowns.com/soft/4/124/2006/So…

  • shell编程 if_linux shell if语句

    shell编程 if_linux shell if语句一、shell编程中条件表达式的使用if  #条件then Commandelse Commandfi   #别忘了这个结尾如果if语句忘了结尾fitest.sh:line14:syntaxerror: unexpectedendoffi二、if的三种条件表达式1.命令执行成功,等于返回0(比如grep,找到匹配);执行失败,

  • Tomcat学习—Tomcat7 修改/webapps/ROOT发布路径(Linux和windows环境)

    在web开发中经常使用到的一个容器就是Tomcat,大多数人在本地开发使用的是windows 环境,而当项目真正远行,一般就是在Linux服务器上。下面主要讲解Linux服务器上修改Tomcat部署应用程序的发布路径! 现在应用服务器上用的笔记多的还是Tomcat7,就以Tomcat为例!Tomcat7和之前的版本一样,默认发布程序是在$Tomcat/webapp/ROOT 下面,就是当我们启动T

  • 1、java语言概述

    1、java语言概述文章目录Java基础知识图解软件开发软件开发人机交互方式命令行常用的DOS命令常用快捷键java语言java版本历史迭代Java技术体系平台Java在各领域的应用Java语言运行机制及运行过程Java语言的特点跨平台性Java两种核心机制核心机制—Java虚拟机核心机制—垃圾回收Java语言的环境搭建什么是JDK,JRE下载并安装JDK配置环境变量开发HelloWorld开发HelloWorld注意:注释(Comment)文档注释Java基础知识图解软件开发软件开发软件,即一系列按照特定顺序组织的

  • 解决MyQL数据库中1045错误的方法——Windows系统「建议收藏」

    解决MyQL数据库中1045错误的方法——Windows系统「建议收藏」在各种各样的适用场所,MySQL会出现各种各样的问题,经过足足半年的长跑,我的数据库终于修复了Bug,可以重新使用了。数据库出问题,那可能是家常便饭了。经过这足足半年的煎熬,我决定在以后的日子里,记录下我在使用数据库时遇到的色彩缤纷的问题,以及这些问题的解决方法。由此,今天写了这篇博客。首先,给大家看看,这个问题是什么样子的。我在这里用到的MySQL可视化工具为Navicat。这个错误…

  • 项目总结 — RFID 读写器上位机软件

    项目总结 — RFID 读写器上位机软件物联网方向的课程项目:RFID读写器上位机软件,是一个基于MFC的软件,通过与连接的设备(这里是读卡器)与IC卡进行数据的交换,举个例子来说:校园卡,公司的门禁卡等等,这个属于物联网的终端信息交互的一个流程。我理解这里主要是两个大的模块:一个是数据的收发,还有一个是界面显示;数据的收发就是通过上位机软件与下位机进行信息的交互,数据的发送具体在项目中就是写卡操作,数据的接收具体在项目中就是读卡操作。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号