WEB前端标准在各浏览器中的实现差异.ppt
文本预览下载声明
Microsoft Engineering Excellence Microsoft 机密 * ENCODING DECLARATION IN THE BROWSER AFFECTS THE FAULT-TOLERANT 欢迎到CSDN的跨浏览开发论坛发帖 ^_^ 版主 WebAdvocate 很彪悍 欢迎到CSDN的跨浏览开发论坛发帖 ^_^ 版主 WebAdvocate 很彪悍 编码声明在浏览器内的容错影响 确定一个文档的字符编码的优先级顺序(由高至低): HTTP Content-Type 字段中的 charset 参数。Content-Type: text/html; charset=ISO-8859-1 META 声明中 http-equiv 为 Content-Type 对应的值中的 charset 的值。META http-equiv=Content-Type content=text/html; charset=ISO-8859-1 元素的 charset 属性。script charset=iso-8859-1 src=XXX/script 我们通常情况下为页面设定的字符编码信息所指对应到浏览器内部大多是字符编码别名,如 ISO-8859-1。 指定了浏览器无法识别的字符编码别名时,浏览器参照上面的优先级顺序采用更低优先级的字符编码,以此类推。 欢迎到CSDN的跨浏览开发论坛发帖 ^_^ 版主 WebAdvocate 很彪悍 编码声明在浏览器内的容错影响 各浏览器对于没有任何字符编码设定的页面所采用的编码类型: !DOCTYPE html html head/head body script document.write((document.charset || document.characterSet).toUpperCase()); /script /body /html IE6 IE7 IE8 Firefox Chrome Safari Opera 字符编码 --- GB2312 ×?·?±à?? --- ISO-8859-1 字符编码 --- GBK 操作系统及浏览器语言均为简体中文。页面中没有设定任何的字符编码信息,页面自身的编码为?GB2312。 当页面没有设置任何字符编码信息或者浏览器无法识别 HTTP 头字段以及 META 元素中所声明的字符编码信息时,所有浏览器均会以各自在当前语言版本下的默认字符编码显示页面。 因为页面自身的编码为?GB2312,则 Windows 平台下?IE Firefox Opera?简体中文版的默认字符编码刚好为?GB2312,所以页面中的字符显示正常。 欢迎到CSDN的跨浏览开发论坛发帖 ^_^ 版主 WebAdvocate 很彪悍 编码声明在浏览器内的容错影响 看一组特殊的例子: ?php header(Content-Type: text/html; charset=maccyrillic); ? !DOCTYPE HTML html head meta http-equiv=Content-Type content=text/html; charset=b.i.g+5/ /head body style=font:24px Tahoma; 字符編碼 --- script document.write((document.charset || document.characterSet).toUpperCase()); /script /body /html IE6 IE7 IE8 Firefox Chrome Safari Opera 才絪絏 --- GB2312 ?r≤≈?s?X --- X-MAC-CYRILLIC 字符編碼 --- BIG5 动态页面自身的编码为?BIG5。 IE Firefox?无法识别maccyrillic,也无法识别b.i.g+5,继而采用了当前语言版本的默认编码 GB2312,与页面自身的字符编码?BIG5?不相符,导致页面中的文字显示异常。 Chrome Safari 识别maccyrillic为合法的X-MAC-CYRILLIC。不再理会更低优先级的编码设置。 Opera?无法识别maccyrillic,将b.i.g+5这种字符编码别名识别为BIG5。 欢迎到CSDN的跨浏览开发论坛发帖 ^_^ 版主 WebAdvocate 很彪悍 编码声明在浏览器内的容错影响 出现上述现象的原因主要有三点: 各浏览器的字符编码别名表不尽相同,对同一种编码下的各种别名支持的宽泛程度不一样。像 maccyrillic 这种别名在 Chrome Safari 可以识别为通用的 X-MAC-CYRILLIC
显示全部