页面乱码
1.问题介绍
页面乱码是用户在浏览网页时较大可能遇到得问题,这一类问题原因可能有很多。
首先我们可以分析到底有哪些可以指定本文本的具体编码
1.文本前的BOM头
2.http头中得charset字段
3.用户选择编码
4.html得meta标签中可以携带charset
5.自动检测(ICU)
6.父frame编码
如果前六项都没有检查出来将使用默认编码
2.分析问题过程
由于知道检查编码顺序,我们就可以一一梳理查看是哪里出现问题
通常情况下我们可以优先查看这三个
1.查看cap包中http头是否有填写charset。服务器搭建者可能指定错了charset,也有可能在偶然情况下http服务器抽风发送错误charset或者没有发charset
2.html头部是不是丢了meta标签
3.进入了自动检查流程,但是对于中文ICU检查一般都不正常
前两步骤都没什么难度,主要是查看cap log中是否有正常的设置,以及和正常情况对比是否有差异。
如果前两点都没有问题,那么在
chromium_dev/chromium/src/third_party/WebKit/Source/core/html/parser/TextResourceDecoder.cpp得decode方法中
对最后得autodetect部分以及最后得result添加log,查看是否为自动检查的问题
3.相关调试技巧
本问题相关调试技巧主要涉及查看cap log
4.解决方法
如果是外部原因导致,如http服务器本该设置charset却没有设置等原因导致,则没有太好的办法可以解决。
如果是自动检查出现异常,则可能需要强制给与m_hintEncoding让自动检查编码模块能够优先考虑该编码。