浏览器确定html文件编码的优先级
前段时间学习web知识,开始以为浏览器对html的解码是按标签<meta>中指定的字符集进行解码的,但是仔细想想发现又存在问题,因为要知道<meta>中指定的字符集,必须先对html文件进行解码,但事先是不知道编码的。于是在网上找了些资料(见附录)。发现浏览器对html文件编码的确定过程还是很复杂的。编码的确定按优先级如下:
1.如果用户指定了编码,则按用户指定的编码进行解码。
2.先对文件进行预解析,如果文件存在BOM(Byte Order Mark),则按BOM确定的编码解码。
BOM(Byte Order Mark)参考: BOM(字节顺序标记(ByteOrderMark))_百度百科
3.如果HTTP响应头中存在编码信息,则按响应头中的编码进行解码。
4.先按浏览器的编码选择算法选择一个编码进行预解析,如果解析出<meta>标签中存在字符集设置,则按<meta>标签中的字符集进行解码。
5.按浏览器的默认编码。
详细资料:
html - web page encoding, with contradictory settings - Stack Overflow