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 直接让服务器返回文本”

  • 相关阅读:
    报错:Failed to create BuildConfig class
    emulator control无法使用问题
    the import android cannot be resolved
    报错:init: Could not find wglGetExtensionsStringARB!
    Android SDK升级后报错error when loading the sdk 发现了元素 d:skin 开头无效内容
    Eclipse Android环境搭建
    android中导入低版本project可能会遇到的编译问题(转自: Victor@Beijing)
    22.9
    GIT文档
    机器学习的几个问题探讨
  • 原文地址:https://www.cnblogs.com/qiaoer1993/p/10619764.html
Copyright © 2011-2022 走看看