如何在网页上使用Unicode符号?

如何在网页上使用Unicode符号?,unicode,cross-browser,Unicode,Cross Browser,我在制作的网页上使用了一些Unicode符号。在这个例子中,假设是这个家伙:'☺'. 据我所知,在CSS的正确实现下,您可以设置任何您想要的字体,如果它遇到了该字体中不存在的字符,它将开始通过字体系列备份选项后退,直到找到一个有效的字体 有鉴于此,我在css中设置了如下字体系列: font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif 我的理由是Tahoma与Windows捆绑在一起。然而,我在网上发现,只有一些版本的Win

我在制作的网页上使用了一些Unicode符号。在这个例子中,假设是这个家伙:'☺'.

据我所知,在CSS的正确实现下,您可以设置任何您想要的字体,如果它遇到了该字体中不存在的字符,它将开始通过字体系列备份选项后退,直到找到一个有效的字体

有鉴于此,我在css中设置了如下字体系列:

font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif
我的理由是Tahoma与Windows捆绑在一起。然而,我在网上发现,只有一些版本的Windows捆绑Tahoma支持Unicode。Helvetica是一种类似于Mac电脑的Tahoma字体。“Arial Unicode MS”与Office 2000及更高版本捆绑在一起,绝对支持Unicode。在所有情况下,sanserif都是一个后备方案,希望它也能支持Unicode

在大多数情况下,这很有效。然而,正如通常所做的那样,Internet Explorer似乎正在破坏我精心制定的计划。我不知道这种模式是什么,因为我在一台运行Vista和IE8的计算机上看到了这种模式,在另一台运行Windows XP和IE7的计算机上看到了这种模式,但在我的开发机器上,它在Win7和IE8/IE7 Tester/IE6 Tester上运行得很好。我在一些晦涩难懂的网页上发现这样的说法:在旧版本的IE上,它只会寻找它拥有的第一种字体,然后将其用于所有东西,即使这种字体缺少给定的符号,但这并不能解释为什么它会出现在Vista/IE8上。因此,我可爱的Unicode符号对于一些IE用户(但不是所有IE用户)来说都是方框

在web上处理Unicode符号的推荐方法是什么?它们是否不适用于需要广泛浏览器兼容性的项目?我应该考虑包含专门处理旧IE的代码吗?是否还有其他我应该担心的情况或平台


编辑:更新了有关此失败系统的新信息。

您可以在CSS文件中使用IE覆盖为旧版本的internet explorer创建不同的行为。根据internet explorer的版本,每个语句前面的越界是
#

在internet explorer 6.0及更早版本的css中,在每条语句之前添加一个
在css中的每个语句前放置一个
#
,仅用于internet explorer

例如:

 //Normal
    font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif;    
    //  IE 6.0 Earlier
    _font-family: Tahoma, Helvetica, sans-serif;
    // IE Only
    #font-family: Tahoma, Helvetica, "Arial Unicode MS", sans-serif;
只有一些版本的Windows捆绑Tahoma支持Unicode

这并不是真正的“Unicode支持”。Tahoma支持Unicode,就像它支持Unicode代码点查找表一样。这并不意味着您可以为Unicode定义的每个字符获得一个标志符号。。。实际上,几乎没有一种字体的每个字符都有字形

Tahoma的任何版本都没有包含U+263白色笑脸的标志符号,因此您的代码是对字体回退功能的测试,与其他浏览器相比,IE(尤其是IE6)在这方面做得不好。从3.00版(包含在WinXP中)开始,更常见的Windows捆绑字体(包括U+26A3)是纯Arial(而不是“Arial Unicode”)

据我所知,在CSS的正确实现下,您可以设置任何您想要的字体,如果它遇到了该字体中不存在的字符,它将开始通过字体系列备份选项后退,直到找到一个有效的字体

不幸的是,它在InternetExplorer中不是这样工作的,至少在旧版本中不是这样。这些浏览器仅使用系统上可用的第一个字体系列。我有时使用的一种方法是为Unicode字符添加单独的CSS类:

<span class="unicode">[Unicode character]</span>

.unicode { font-family: "Lucida Sans Unicode", ..., sans-serif; }
[Unicode字符]
.unicode{字体系列:“Lucida Sans unicode”,…,Sans serif;}
我发现Lucida Sans Unicode是一个不错的选择,因为自Windows 98以来,它已预装在所有Windows版本上。不过,它对Unicode的支持并不像您预期的那么全面


但我开始喜欢图标字体。它们的优点是,不管实际使用的字体是什么,字形看起来总是一样的。正如John Slegers在他的回答中提到的,有很多很棒的在线工具可以创建您自己定制的图标字体。

我的建议是让您的用户升级到现代浏览器,但我已经知道这一建议将获得多大的吸引力。除此之外,我所知道的唯一简单易行的方法就是使用图像而不是Unicode字符。@Robert Harvey哦,我确实在这样做。不幸的是,我认为我遇到的这个问题的主要群体是那些无法控制自己浏览器的工作人员。这是无效的CSS,有可能混淆其他浏览器。