css文件编码的问题分析
对于一个未显式声明编码的 CSS 文件,浏览器会将其编码认为与引入该文件的文件的编码一致。在一些特定的情况下,将造成 CSS 代码解析异常。举例如下:
<html><head><meta http-equiv=Content-Type content=text/html; charset=utf-8/>
<link rel=stylesheet type=text/css href=css.css/></head>
<body><h1>内容文本</h1></body></html>
h1 {
margin:0;width:100px;height:100px; background:blue; font:20px/100px 黑体;text-decoration:underline;color:red;}
假设上述两个文件均为在 HTTP 响应头中设定编码,在各浏览器中表现如下:
可见,IE6 把 CSS 文件从“黑体”二字到规则结束的样式都没有起作用,其他浏览器中仅“黑体”二字解析错误。
产生这种差异的原因是各浏览器对与这种错误的容错方式不同。
按照规范的规定,在这种情况下,浏览器会认为 CSS 文件的编码与页面一致,即 UTF-8,但 GB2312 编码下的一个中文字符是 2 个字节,在 UTF-8 编码下则为 3 个字节,在把 GB2312 编码下的“黑体”二字当作 UTF-8 编码的文字来解析的时候,得到的是“����”,这并不是预期的值。正是这个值导致了样式定义在各浏览器中都无法按照预期被解析。
2024-11-19 广告