encoder和decoder的区别_python encode函数

encoder和decoder的区别_python encode函数python内部的字符串一般都是Unicode编码。代码中字符串的默认编码与代码文件本身的编码是一致的。所以要做一些编码转换通常是要以Unicode作为中间编码进行转换的,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。decode:的作用是将其他编码的字符串转换成Unicode编码,name.decode(“GB23…

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

Jetbrains全系列IDE稳定放心使用

python内部的字符串一般都是 Unicode编码。代码中字符串的默认编码与代码文件本身的编码是一致的。所以要做一些编码转换通常是要以Unicode作为中间编码进行转换的,即先将其他编码的字符串解码(decode)成 Unicode,再从 Unicode编码(encode)成另一种编码。

decode:
的作用是将其他编码的字符串转换成 Unicode 编码, name.decode(“GB2312”),表示将GB2312编码的字符串name转换成Unicode编码

encode:
的作用是将Unicode编码转换成其他编码的字符串, name.encode(”GB2312“),表示将unicode编码的字符串name转换成GB2312编码

所以在进行编码转换的时候必须先知道 name 是那种编码,然后 decode 成 Unicode 编码,最后载 encode 成需要编码的编码。当然了,如果 name 已经就是 Unicode 编码了,那么就不需要进行 decode 进行解码转换了,直接用 encode 就可以编码成你所需要的编码。值得注意的是:对 Unicode 进行编码和对 str 进行编码都是错误的。

eg:
由于内置函数 open() 打开文件时,read() 读取的是 str,读取后需要使用正确的编码格式进行 decode()。write() 写入时,如果参数是 Unicode,则需要使用你希望写入的编码进行 encode(),如果是其他编码格式的 str,则需要先用该 str 的编码进行 decode(),转成 Unicode 后再使用写入的编码进行 encode()。如果直接将 Unicode 作为参数传入 write() ,python 将先使用源代码文件声明的字符编码进行编码然后写入。

例

# coding: UTF-8
 
fp1 = open('test.txt', 'r')
info1 = fp1.read()
# 已知是 GBK 编码,解码成 Unicode
tmp = info1.decode('GBK')
 
fp2 = open('test.txt', 'w')
# 编码成 UTF-8 编码的 str
info2 = tmp.encode('UTF-8')
fp2.write(info2)
fp2.close()
先知道info1是字符串,其编码为GBK,将其解码成unicode.存在tmp中。再将其编码成utf-8,存在info2中。这样写入fp2文件中的内容就是utf-8格式的了。那么能保证fp2中的内容编码一致,都是utf-8
utf-8也能显示中文。它是可变长的编码方式,可以使用 1~4 个字节表示一个字符,可根据不同的符号而变化字节长度。
python3中默认文件为utf-8格式。字符串不需使用.decode()。其作为unicode编码。可以直接使用encode编码为其他。

获取系统默认编码:
import sys
print sys.getdefaultencoding()

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

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

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

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

(0)


相关推荐

  • 浏览器内核(navigator.appName显示的不是内核信息!!)。

    浏览器内核(navigator.appName显示的不是内核信息!!)。前言:今天用navigator.appName命令时,发现Chrome和FireFox都是”Netscape”。于是有疑问,怎么回事网景公司的浏览起名字呢!(IE是”MicrosoftInternetExplorer”)(Presto是”Opera”)上网调查了一下,最开始以为和浏览器内核有关,但其实关系不大。Trident:IE以Triden…

  • 在IDEA上Git的入门使用(IDEA+Git)[通俗易懂]

    在IDEA上Git的入门使用(IDEA+Git)[通俗易懂]前言:Git是目前最常用的版本控制系统,而IDEA又是目前日渐流行的ide,因此现在来介绍在IDEA上Git的入门使用。 准备:Git、IDEA、GitHub账号开始之前先创建一个简单的测试项目 将代码交由Git管理    VCS ——> EnableVersionControlIntegration…    ——> 选择要使…

  • 物业管理系统源码java_Java小区物业管理系统 源码报告下载

    物业管理系统源码java_Java小区物业管理系统 源码报告下载小学期实习就弄了个这…留作纪念.技术上突飞猛进的三周,教会了我一些做人的道理,尤其是:团队合作时的木桶效应….整个后端不是我做的,但是我还是改了好多,要不然总不可能让废柴坐那玩手机吧…其实并没有什么卵用…Bootstrap主题不错,不过里面好多文件冗余还不敢删…上传了完整的工程文件,docs目录里是部分文档…系统功能用户登录管理:这是系统的必要部分,通过它可…

  • web服务:Nginx和Apache的区别

    web服务:Nginx和Apache的区别一、Nginx特点1、轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源。  2、抗并发,nginx以epollandkqueue作为开发模型,处理请求是异步非阻塞的,负载能力比apache高很多,而apache则是阻塞型的。在高并发下nginx能保持低资源低消耗高性能,而apache在PHP处理慢或者前端压力很大的情况下,很容易出现进程数飙升,从而拒绝服务的现象。  …

  • latex的参考文献写法标准_参考文献举例

    latex的参考文献写法标准_参考文献举例使用Latex撰写论文时,通常会遇到参考文献格式问题,下面我将与大家分享Latex参考文献规范写作。 1、建议使用bib文件编写Reference这样可以减少格式、空格和标点符号的错误。 Bibtex使用方法简介:新建一个空白文本文档,把后缀名改成bib即可,比如TIP.bib; 用TexWorks打开文件,加入你想要引用的文章,有一个简便的添加的方式是使用百度/谷歌…

  • python处理xps文件_xps/pdf/png/json转换

    python处理xps文件_xps/pdf/png/json转换问题11.如何移植最新版本的pdf.js到pdf2json库中来2.如何实现坐标换算参考源码x/px=PDFUnit.toPixelX(x+0.25)y/px=PDFUnit.toPixelY(x+0.75)w/px=PDFUnit.toFixedFloat(maxWidth),Theunitforallwidth,height,length,etc,isin”…

发表回复

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

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