网页编码

最近打算弄弄网站的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;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容