zoukankan      html  css  js  c++  java
  • 打印出来的文字乱码怎么办(还有一种可能是由于Accept-Encoding: gzip, deflate, br导致的,还有'Content-Encoding: gzip')

    例如:

    response = requests.get(url=url,headers=headers)
    
    print(response.encoding)
    text = response.text
    
    html = etree.HTML(text)
    
    title = html.xpath("//div[contains(@class,'ppt_tit')]/h1/text()")[0]
    

      输出的结果为:

    ISO-8859-1
    一,乱码情况:土建预算员简历模板    和       ÏÂÔØÉùÃ÷

    解决的办法有两种:(解决思路,先打印当前的编码类型,为ISO-8859-1,然后就先用ISO-8859-1编码,然后再用decode()来转码,至于使用"utf-8"还是"gbk"得看html里面的编码方式。)

    1、

    response = requests.get(url=url,headers=headers)
    
    print(response.encoding)
    text = response.content.decode('utf-8')  #这里的utf-8是从html代码里面得来的
    
    html = etree.HTML(text)
    
    title = html.xpath("//div[contains(@class,'ppt_tit')]/h1/text()")[0]
    

      

    2、

    response = requests.get(url=url,headers=headers)
    
    print(response.encoding)   #得到当前的编码格式
    text = response.text
    
    html = etree.HTML(text)
    
    title = html.xpath("//div[contains(@class,'ppt_tit')]/h1/text()")[0]  #这里取到的是乱码的
    
    title = title.encode('ISO-8859-1').decode('utf-8')   #将当前的编码格式转换为前端的编码格式   ,ISO-8859-1是当前的编码格式,前端html里面的编码格式utf-8
    title = title.encode('ISO-8859-1').decode('gbk', 'ignore')   #将当前的编码格式转换为前端的编码格式   ,ISO-8859-1是当前的编码格式,前端html里面的编码格式为charset=gb2312

    二、乱码情况(

    �͋�����I= ) ������T�߽L�td6��G�vJ�����a�B)L�k������}n}���*�T��;��O��|I)$�_W.����랙��{[�6�e6ˎ6t䘈3
    ����W��)�����Ѫ�G2�������3ӳ$iu �*�8B6 G���rb9
    H���R(ub�B�:�ZZl��� � b�ء`���4�Ę����p�k�'��������!tw�� }E{k�~V0Z�A[V�@D�Ѹb�,x��]�h���ӣT�#�� �D�Vm��Ţd�����H�3>fq�ݵ�����<.��1�E.e�755�j+fZ[�u�R&��"���w�3z[���&��*;��[�����_��<�,4{���/�A쵧�m����������ϟL�7}�����c.~yx�����=@M�{��_/M�<y���'���i0��x����O@0d�|��/X���~���8}���?_�^y|��cE|��t���;�<;�᝿~�����W��~?����������~?����#����_0

    在设置请求头时有时候不能把浏览器中所有的数据原封不动的都复制,其中“Accept-Encoding:gzip, deflate, br”代表的信息是:“

    其实这个头信息是告诉服务器客户端所支持的压缩方式,如果没有这行的话,就是告诉服务器,客户端不支持压缩,要求不压缩直接返回文本。

            因为在请求头中添加了Accept-Encoding: gzip,deflate所以服务器返回的是压缩后的数据,而本地客户端却没有对这些数据进行解压缩因此得到的便是一堆乱码了。解决方案就是去掉Accept-Encoding: gzip,deflate 直接让服务器返回文本”

  • 相关阅读:
    mvc Controller类介绍
    Mvc全局过滤器与Action排除
    MVC项目实践,在三层架构下实现SportsStore-03,Ninject控制器工厂等
    EF查询数据库框架的搭建
    MVC项目实践,在三层架构下实现SportsStore-01,EF Code First建模、DAL层等
    BootstrapTable与KnockoutJS相结合实现增删改查功能
    JSON详解
    Asp.net管道模型(管线模型)
    NET/ASP.NET MVC Controller 控制器(一:深入解析控制器运行原理)
    .NET/ASP.NET Routing路由(深入解析路由系统架构原理)
  • 原文地址:https://www.cnblogs.com/qiaoer1993/p/10619764.html
Copyright © 2011-2022 走看看