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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea 2021 激活码【2021最新】「建议收藏」

    (idea 2021 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    261
  • idea2021激活码(破解版激活)

    idea2021激活码(破解版激活),https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    97
  • 一文读懂C++虚继承的内存模型

    一文读懂C++虚继承的内存模型一文读懂C++虚继承的内存模型1、前言2、多继承存在的问题3、虚继承简介4、虚继承在标准库中的使用5、虚继承下派生类的内存布局解析6、总结1、前言C++虚继承的内存模型是一个经典的问题,其具体实现依赖于编译器,可能会出现较大差异,但原理和最终的目的是大体相同的。本文将对g++中虚继承的内存模型进行详细解析。2、多继承存在的问题C++的多继承是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。从概念上来讲这是非常简单的,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突

    2022年6月7日
    28
  • 服务器内网怎么更新微软补丁,架WSUS服务器 内网自动打补丁「建议收藏」

    三、客户端配置  运行“Gpedit.msc”打开组策略编辑器。在组策略编辑器中,依次单击“计算机配置→管理模板→Windows组件→WindowsUpdate”。在右侧双击“配置自动更新”,将自动更新策略设置为“启用”,并设置为“自动下载并计划安装”(图4)。图4双击“指定IntranetMicrosoft更新服务位置”,选择“已启用”项,在“为检测更新设置Intranet夹新服务”下方输入…

    2022年4月18日
    37
  • 【转】推荐几个免费下载激活成功教程软件的网站以及系统「建议收藏」

    【转】推荐几个免费下载激活成功教程软件的网站以及系统「建议收藏」今天想给大家推荐一些免费下载激活成功教程软件的网站,希望能帮助到大家!第一个要推荐的就CSDN自己的下载资源网站:https://download.csdn.net/推荐的原因主要是资源够全,一般网上有的这里都有,而且下载的时候能看到其他下载者的真实评价,但是有点不好的就是对新人不太友好,虽然有很多免积分的,但是一些新的资源都需要积分,不过人人为我,我为人人,在这里赚扣分也是很简单的事,只要你能上…

    2022年6月21日
    29
  • 使用 data-* 属性来嵌入自定义数据:

    使用 data-* 属性来嵌入自定义数据:

    2021年10月17日
    44

发表回复

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

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