python中encode和decode的区别_python lstrip

python中encode和decode的区别_python lstrip1.decode()bytes.decode(encoding=“utf-8”,errors=“strict”)1.这个函数是bytes类型数据调用的,字符串str类型是不能够调用的。(好多文章说字符串也可以调用该函数,我是真搞不懂。)2.该函数返回字符串。换句话说是bytes类型转化成str类型的函数。3.encoding规定解码方式。bytes数据是由什么编码方式编码的,该函数enc…

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

Jetbrains全系列IDE稳定放心使用

unicode编码方案:
unicode只规定了每个字符所对应的码值(码点),即编码,但并没有规定如何在计算机中实现。同一个字符,可通过utf-8、utf-16、utf-32、gb2312(对中文)等多种方式各自实现。encode()方法就是将unicode编码方式转化为对应的实现方式,而decode()相反,将实现方式转化为编码。

1.decode()

bytes.decode(encoding=“utf-8”, errors=“strict”)
1.这个函数是bytes类型数据调用的,字符串str类型是不能够调用的。(好多文章说字符串也可以调用该函数,我是真搞不懂。)
2.该函数返回字符串。换句话说是bytes类型转化成str类型的函数。
3.encoding规定解码方式。bytes数据是由什么编码方式编码的,该函数encoding参数就必须用相应解码方式,这样才能返回正确字符串。解码后的字符串自动转为unicode编码方式。
4.errors参数默认为strict,即解码错误后引起异常发生。其他参数值为ignore,replace等。

2.encode()

str.encode(encoding=“utf-8”, errors=“strict”)
参数含义同上。这个函数将字符串转化成相应编码方式的字节形式。对于ASCII字符(数字,英文,部分标点符号)而言,不同编码方式编码后的字节是一样的。但是对于中文来说,编码后的字节不一样。

3.转码

例如,我有一个中文网站,网站编码方式为gb2312,我通过requests请求后要将网页打印出来。但是python内部是unicode编码的,直接response.text肯定会返回乱码。

import requests
url_all="https://www.kanunu8.com/"
header_all={
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
    'upgrade-insecure-request': '1',
}
def get_classification_urls(url,headers):
    try:
        response=requests.get(url,headers=headers,timeout=10)
        if response.status_code==200:
            print(response.text))
    except Exception as e:
        print(e)

如下图,果然乱码
乱码
这时就需要正确解码,即将gb2312解码为unicode.我们可以这样:
1.先获取编码的二进制格式,该格式为gb2312编码的二进制:

bytes=response.content

2.将二进制格式通过decode()函数解码为unicode格式:

bytes.decode(encoding="gb2312")

decode()函数是bytes类型转str类型,这样就能够返回正确的字符串了。

当然,这个例子即使通过gb2312解码,仍然是乱码。原因可能是原网页含有gb2312不能识别的字符(虽然gb2312是为中国文字服务的,但是有些少数名族的字符也属于中国文字,但是并没有包含在gb2312内)。后来为了扩充编码,由在gb2312基础上增加了gbk和gb18030编码,二者范围更广。事例用gb18030即可正确解码。

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

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/189010.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Shell脚本编程_shell简单脚本

    Shell脚本编程_shell简单脚本文章目录1.shell概述1.1shell和shell脚本1.2Shell脚本应用场景1.4shell类型1.shell概述1.1shell和shell脚本  shell是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务,在用户和内核之间充当翻译官的角色,是一个命令解释器。KenThompson的sh是第一种UnixShell,WindowsExplorer是一个典型的图形界面shell。  shell脚本(

    2022年9月26日
    4
  • 社区版pycharm flask封装接口[通俗易懂]

    社区版pycharm flask封装接口[通俗易懂]因为装的pycharm版本是社区版,没有单独的flask项目创建入口1、首先和创建python项目一样创建一个项目:要选择虚拟环境(一般默认即可)2、项目文件夹下安装flask:npminstallflask前端渲染后续研究,此次只封装接口3导包notes:1、调试过程中要手动打开debug模式2、cors是解决前端跨域问题impor…

    2025年7月25日
    3
  • Cortex M3 NVIC与中断控制

    Cortex M3 NVIC与中断控制CortexM3 NVIC与中断控制宗旨:技术的学习是有限的,分享的精神的无限的。一、NVIC概览——嵌套中断向量表控制器    NVIC的寄存器以存储器映射的方式来访问,除了包含控制寄存器和中断处理的控制逻辑之外,NVIC还包含了MPU、SysTick定时器以及调试控制相关的寄存器。NVIC共支持1至240个外部中断输入(通常外

    2022年5月8日
    38
  • FPGA实现uart_FPGA的EMU接口

    FPGA实现uart_FPGA的EMU接口一、顶层设计思路:UART即通用异步收发传输接口(UniversalAsynchronousReceiver/Transmitter),简称串口,是一种常用的通信接口,其协议原理就不赘述了,不了解的可以百度。(不赘述不代表不重要,相反,对于每一个FPGA设计,充分理解原理是基础和前提,而FPGA和Verilog只是工具。)用FPGA来实现UART,关键就是要将UART收发数据时的时序用Verilog描述出来。根据UART协议的原理,可以将整个UART分为两个模块…

    2022年9月14日
    3
  • settimeout()方法_setinterval函数

    settimeout()方法_setinterval函数setTimeOut()は、指定された時間「待ってから」指定された動作を行う関数です。setTimeOut():等待指定时间,执行指定方法。 setTimeInterval()は、指定された時間「間隔ごとに」指定された動作を行う関数です。setTimeInterval():间隔指定时间,执行指定方法。 処理の開始を待ちたいのであれば「setTimeOut」を使いますし、如果是从处理…

    2022年10月5日
    3
  • kettle工具使用教程_开源etl工具kettle

    kettle工具使用教程_开源etl工具kettlekettle工具使用简明手册运行启动脚本spoon.bat快捷方式如果正确启动,则出现的主界面应该是下面这样的。初次进入需右键新建作业新建数据库连接也可以想下面一样,新建数据库连接向导填完参数测试一下连接通过向导分步来我已经建立了转换任务和数据库连接,可以直接应用。 建立多表复制点击开始即可,多表的…

    2022年8月31日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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