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


相关推荐

  • 【工作技巧】WinRAR去除广告

    【工作技巧】WinRAR去除广告一、下载软件1.1、进入WinRAR国内官网,根据个人电脑系统位数进行下载对应的安装包。傻瓜式安装WinRAR,全部点击下一步。1.3、进入ResourceHacker官网,点击Download,然后点击EXEinstall,下载安装包。傻瓜式安装ResourceHacker,全部点击下一步。二、修改WinRAR.exe2.1、打开ResourceHacker程序,使用快捷键【Ctrl+O】选择WinRAR.exe文件。一般路径为【D:\ProgramFiles\WinRAR\Wi

    2022年5月9日
    47
  • 语音信号处理分类

    语音信号处理分类人与人之间的通信:语音压缩与编码压缩语音信号的传输带宽或者降低电话信道的传输码率解释:比特率=位深X采样率X信道个数,比特率越高,还原度越高,速度越慢。所以降低编码比特率,可以节省频率资源。第一类人与机器之间的通信:语音合成机器讲话,人接听文语转换(TTS)系统,主要关注可理解度,自然度,可懂度,逼真度(情感语音合成)第二类人与机器之间的通信:语音识别人讲话,机器接…

    2022年5月26日
    41
  • Python简单爬虫入门一

    Python简单爬虫入门一

    2022年2月22日
    48
  • 请慎用ASP.Net的validateRequest=”false”属性

    请慎用ASP.Net的validateRequest=”false”属性阅读全文下载代码:http://www.cckan.net/forum.php?mod=viewthread&tid=74在客户端的文体框里输入“例如”等字符的时候为出现这样的错误序安全的尝试,如跨站点的脚本攻击。通过在Page指令或配置节中设置validateRequest=false可以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。 异常

    2022年6月10日
    30
  • Ajax清晰请求步骤与代码

    Ajax清晰请求步骤与代码异步请求ajax的使用在前后台传递数据,优化用户体验起着至关重要的角色,那么下面给大家简单罗列了一下ajax请求的步骤与代码。一、原生JS中的Ajax:1、使用ajax发送数据的步骤第一步:创建异步对象varxhr=newXMLHttpRequest();第二步:设置请求行open(请求方式,请求url)://get请求如果有参数就需要在…

    2022年5月16日
    41
  • linux 重启nginx 服务[通俗易懂]

    linux 重启nginx 服务[通俗易懂]第一步:进入nginx安装目录默认安装目录为/usr/local/nginx/sbin/nginx这里我的安装路径为/app/nwom/Inspur/apps/tools-nginx第二步:查看进程ps-ef|grepnginx第三步:杀掉原进程从主进程开始(上图圈红的为主进程)kill-92386kill-9238723882389239023912392239323942395239623972398第四步:启动进程启动方式1:./ngin

    2022年8月13日
    7

发表回复

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

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