美文网首页
网页编码

网页编码

作者: ohyang | 来源:发表于2019-09-26 16:34 被阅读0次

    最近打算弄弄网站的SEO的相关事情,在最开始碰到了一个比较奇怪的问题,记录一下。
    碰到的问题:用python的requests抓取网站,返回乱码。

    import requests
    url = "http://127.0.0.1/a.html"
    response = requests.get(url=url)
    print(response.text)
    

    a.html内容

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    </head>
    <body>
        虎虎管家 - 拼多多商品搬家
    </body>
    </html>
    

    打印出来的结果


    image.png

    乱码!
    这个是因为requests的默认编码是 ISO-8859-1,如果指定编码为utf-8,那么可以正确返回结果

    response.encoding='utf-8'
    

    但是,requests本身是会基于响应包的头部编码正确设置的,显然是我的网页不够完美,导致需要requests需要强制设置编码。

    看了一下返回包的header,果然没有指定编码


    image.png

    这就很奇怪了,在代码里面已经定义了charset=utf-8,为什么不能生效呢,浏览器里面看到的是正确的。

    原来,这里其实是两个不同的编码(https://www.ibm.com/developerworks/cn/web/wa-lo-ecoding-response-problem/index.html

    1)通知浏览器编码:
    通过<meta http-equiv="Content-Type" content="text/html; charset=utf-8">设置这个编码,告诉浏览器该用哪个编码
    2)响应编码:
    在web-server设置(针对静态资源,后端服务可以在代码里面设置)
    所以只需要在nginx的配置里面添加就可以了。

    charset utf-8;
    

    相关文章

      网友评论

          本文标题:网页编码

          本文链接:https://www.haomeiwen.com/subject/yzhnuctx.html