为什么当我使用Safari而不是在运行Lion的同一台MacBook上使用Chrome时,会出现类似em的表情符号?两种浏览器都使用WebKit,我想字体支持来自操作系统,而不是应用程序。
仅供参考,以下是在Chrome 17.0.963.56中呈现的页面:
这是Safari 5.1.3(7534.53.10)中呈现的页面:
为什么当我使用Safari而不是在运行Lion的同一台MacBook上使用Chrome时,会出现类似em的表情符号?两种浏览器都使用WebKit,我想字体支持来自操作系统,而不是应用程序。
仅供参考,以下是在Chrome 17.0.963.56中呈现的页面:
这是Safari 5.1.3(7534.53.10)中呈现的页面:
Answers:
不同之处在于浏览器窗口的渲染引擎。
我们知道Safari呈现的字符集与Chrome不同。但是Window UI元素(Chrome中的选项卡)可以。那是我们最大的线索。
窗口UI元素很可能全部由OS呈现(强调可能,此处可能不正确)。因此他们获得了完整的OS级表情符号扩展处理。
但是,Web浏览器窗口内部发生的一切都完全取决于浏览器。渲染引擎是每个浏览器秘密的重要组成部分。
Safari和Chrome都使用WebKit,但是它们使用的WebKit实例之间的相似之处停止在引擎名称附近。它们都是主版本的分支,并且都经过大量定制,以每个浏览器开发团队认为对最终用户有意义的方式提高性能。
@JasonSalaz在Chrome错误数据库中发现了一个很棒的错误,该错误可以最终归结到WebKit分支:http : //code.google.com/p/chromium/issues/detail? id=90177- 该错误是讨论Chrome中的fork和开源项目中的WebKit主线之间的区别。Chrome浏览器正在使用的版本尚未在主线中提供渲染差异。看起来他们打算在某个时候合并更改。
更新:Paul Irish撰写了一篇很棒的博客文章,介绍WebKit对于当前使用它的所有这些浏览器的不同之处。如果您真的想了解WebKit环境的多样性,那么这是一本好书。
问题是您的浏览器使用的字符编码与您正在查看的文档的字符编码不同。
那么浏览器如何知道要使用哪种字符编码?
Content-Type
头在HTTP中指定。meta
元素为HTML文档指定它。charset
属性为特定的HTML元素指定它。如果未指定这些字符,则不同的浏览器将使用不同的技术来猜测正确的字符编码。有些使用启发式。有些允许用户指定字符编码。有些人选择操作系统的默认字符编码。
如果这些都不成功,您将得到胡言乱语,也称为mojibake。
因此,直接回答您的问题:Safari和Chrome正在尝试不同的方法来找到正确的字符编码。
https://code.google.com/p/chromium/issues/detail?id=62435最近被标记为已修复;从41版开始,表情符号应在Chrome中正常显示。
该符号是Apple制造的字符。Safari使用自己的字符集。