为什么我不应该在代码/ HTML文档中使用奇怪的字符?

时间:2012-04-26 00:29:01

标签: html unicode ascii

我想知道在我的代码中使用奇怪的字符是不是一个坏主意。我最近尝试使用它们创建小点来指示您正在使用哪张幻灯片并轻松更改幻灯片:

enter image description here

这些类型的角色有很多种,在很多情况下它们似乎可以代替图标/图像使用,它们具有风格和可扩展性,并且屏幕阅读器能够理解他们。

但是,我没有看到有人这样做,我觉得这是一个坏主意,我无法确定原因。我想这似乎太容易了。有人能告诉我为什么这样或不好吗?这里有一些我正在谈论的角色的例子:

↖↗↙↘○◎○⊕⊙○△▲☆★◇◆■▽▼§¥〒¢£※♀♂&⁂℡ↂ░▣▤▥▦✐✌▧✐✌✡✡✡✕✔✔✕ ✖♂♀♥♡☎☎☎☏⊙⊙☺☻►◄▧▨♨◑↔↕♥♡▫☼♦▀▌▐▐▒▒♦◊

PS:我也欢迎关于这些字符的一般信息,它们被称为什么和东西(ASCII,Unicode)?

6 个答案:

答案 0 :(得分:2)

有三件事要处理:

1。作为句子/文本中的字符:

问题是某些字体根本没有它们。但是,由于CSS可以控制字体使用,因此您可能不会遇到此问题。只要您使用网络安全字体,并且知道该字体可以使用该字体,您应该没问题。

您也可以使用嵌入式字体,但请确保使用包含所需字符的Web安全字体,因为许多浏览器不支持嵌入字体。

但有时某些设备不会有多种字体可供选择。如果该字体不支持您的角色,您将遇到问题。但是,根据您的网站所做的以及您定位的受众群体,这可能不是您的问题。更不用说像这样的设备非常陈旧,而且不常见。

总而言之,几年前它可能不是一个好主意,但现在只要你涵盖所有基础,你就不会有问题。

然而,重要的是要指出您不应该对这些字符进行硬编码,而是使用HTML实体。只是将这些字符插入代码可能会导致不可预测的结果。我最近将Word中的一些文本直接复制到我的代码中,Word使用了智能引号(引号正确向内弯曲)。它们在Notepad ++中表现得很好,但是当我查看页面时我没有得到引号,我得到了一些奇怪的符号。

我可以用普通引号"或HTML实体替换它们以保留样式“”)。

任何Unicode字符都可以这种方式插入(即使是那些没有特殊名称的字符)。

维基百科有一个很好的参考: http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

2。作为UI元素:

虽然在许多情况下使用它们可能是安全的,但在可能的情况下使用HTML元素仍然更好。您可以简单地将一些div元素设置为圆形,并填充/不填充您的示例。

就设计而言,它们确实是限制性的,找到一个适合您页面风格的设置可能很麻烦,并且可能意味着您肯定需要嵌入一种字体,这仍然只有最新的浏览器支持

此外,许多设备不支持繁重的字体操作,并且通常会显示效果不佳。它适用于文本流,但作为UI的重要部分,可能存在重大问题。这些角色中的任何一个可能带来的任何问题都将成为你的用户界面的一部分。

从艺术角度来看,他们只会过分限制你的能力。

3。你在做什么?

最后你需要考虑这个:

  • 文字用于说明
  • 图片用于展示
  • HTML用于组织
  • CSS是为了让你在展示它们时看起来很好看
  • JavaScript代表功能

这些字符是文字​​,它们用于告诉某人某事。所以问一个问题:“我在做什么?”然后使用为该任务设计的内容。如果您正在使用它们,如果您正在使用图像或CSS。

答案 1 :(得分:1)

我之前见过这个(星星),我认为这是一个很棒的主意!使用带有图标的字体(带有@ font-face)变得非常流行,如下所示:http://fortawesome.github.com/Font-Awesome/

我看不出使用像“font awesome”这样的字体有任何缺点(只有你提到的像scalabilty这样的优点以及用CSS改变颜色的能力)。也许使用你提到的特殊字符有一个缺点,但我不知道。

答案 2 :(得分:1)

使用这些字符的问题在于并非所有字体都使用所有字体,这意味着您的应用程序可能看起来很奇怪,或者在最坏的情况下无法使用。也就是说,假设某些常用字体(Apple / Microsoft的Arial,Bitstream Vera)中可用的字符变得越来越普遍。您甚至不能假设您可以下载字体,因为某些用户可能会使用Instapaper或Read It Later等服务捕获内容以供离线阅读。

答案 3 :(得分:1)

有很多问题:

可移植性:在代码中使用除7位ASCII字符之外的任何内容都可以使您的代码不那么便携,因为收件人可能使用错误的编码。您可以做很多事情来缓解这种情况(例如,使用UTF16或至少UTF-8编码的文件)。大多数语言允许您使用某种形式的转义符号(例如C#中的“\ u1234”)来指定字符串中的字符串,这样可以避免这个问题,但会失去一些优点。

字体依赖性:依赖于字体中可用的特殊字符的用户界面元素可能更难以国际化,因为这些字形可能不是您希望/需要用于特定受众的字体。

没有颜色,艺术选择有限:虽然字体字形看起来对编码器有用,但对于UI设计师来说,它们可能看起来很差。

答案 4 :(得分:1)

问题非常广泛;它可以被分成几千个类型的问题“为什么我不应该在HTML文档中使用字符?”这似乎是问题所在 - 不是真正的代码。它是关于角色,从某些角度来看,被视为“怪异”或“不常见”或“特殊”,而不是字符编码。 (提到的所有字符都不是用ASCII编码的。有些是用ISO-8895-1编码的。所有字符都用Unicode编码。)

HTML文档中使用 字符。没有使用它们的一般原因,但是在特定情况下,为什么某些特定字符可能不是最佳方法的特定原因。

例如,您在示例中提到的“小点”(可能根本不是圆点或子弹),当用作您描述的控制元素时,将意味着可用性差和可访问性差。使它们显着增大会改善这种情况,但这或多或少证明这些文本字符不适合控制。

屏幕阅读器可以了解特殊字符,如果他们使用了各种字符属性的数据库。嗯,他们没有,他们经常无法正确阅读甚至最常见的特殊字符。只读一个字符的Unicode名称可能是神秘的或完全误导。正确的阅读通常取决于意义和背景。

然而,主要问题是人们通常不会识别您分配给他们的意义中的字符。有多少人知道带圆圈的加号“⊕”代表什么?也许千分之一,乐观地思考。在高级数学或物理学的页面上使用可能是正确的,特别是如果在那里定义了符号。但是在一般文本中使用,它只是......一个奇怪的角色,人们会在其中读出不同的含义,或者只是感到困惑。

所以使用特殊字符只是因为它们看起来很酷并不是一个好主意。即使有特殊角色的时间和地点,也有技术问题。你期望包含多少种字体“⊕”?你期望Joe Q. Public在他的电脑中有多少种字体?在这种特定情况下,您会发现字体覆盖范围相当不错,但您仍需要对其进行分析并在CSS代码中编写一长串字体名称以涵盖大多数平台。在一堆便便案例(♨)中,期望大多数人看到任何东西而不是无法代表的角色的象征是不现实的。关于找出这些事情的方法,请查看我的Guide to using special characters in HTML

答案 5 :(得分:0)

我遇到使用不常见字符的问题:工具编辑器,编译器,解释器等)经常抱怨并报告错误。最后,这不值得麻烦。是西方的霸权,还是同质的,或者说是好事!