使用HTML符号实体而不是实际符号

时间:2013-05-16 18:18:34

标签: html

有什么特别的原因我应该使用HTML符号实体而不是实际的符号(我的意思是我可以输入的那个)?例如符号/;它的HTML实体代码是&#47

我应该在HTML代码中使用符号代码或符号本身吗?为什么?

3 个答案:

答案 0 :(得分:1)

使用HTML实体引用允许实体按预期表示,而不管应用于文档的编码如何。这是好处。

不要严格使用所有非US-ASCII字符的实体,而是可以为支持文档目标语言的文档使用编码,最好还支持其他语言,如UTF-8。

但是,请避免使用任何特定于系统的编码,尤其是常规Windows编码。通常情况下,Windows-1252文本被发送到具有错误标签ISO-8859-1的其他系统。

过去,对数字HTML实体的支持肯定不如命名HTML实体(基于我自己的第一人称眼见证观察),但理论上数字HTML实体仍然是独立的字符编码,“安全“因为数值直接指向在UCS中注册的代码点(http://en.wikipedia.org/wiki/Universal_Character_Set)并且等同于其定义的字符名称。

警告:以下内容描述了我自己的经历,而你的经历可能会有所不同。

  • 客户传输给我的HTML文档使用直接嵌入的符号经常被破坏,无法恢复。这可能是美国基础设施的弱点,也可能是我的客户对如何发送文件缺乏了解。主要语言依赖于非ASCII字符的国家/地区的基础架构和人员更有可能支持和了解如何正确传输文档而不会损坏。

  • 如果您正在开发自己的网站并将自己文件的最终副本上传到服务器,那么损坏的风险非常小。

  • 如果您无法控制文档,只需将其编辑到用户提供的位置,那么您就冒险(可能不是今天,但肯定是近几年在美国,可能不仅仅是风险)在整个过程中的某个时刻对文档进行了不正确的转换,并且无论您尝试查看哪种编码,都会被永久损坏。

答案 1 :(得分:0)

没有

实体和字符引用仅在以下情况下有用:

  • 该字符在HTML中具有特殊含义,您想要使用该字符(/永远不会,它只会在您不能拥有/作为数据的地方具有特殊含义反正)。
  • 您无法输入字符(例如,因为它不会出现在键盘上)。
  • 您无法将文件编码为UTF-8(或包含它的其他编码...并且/出现在ASCII中)。

答案 2 :(得分:-3)

除非您知道您将始终使用相同的软件和计算机系统来编辑HTML,否则如果直接使用符号,无论编码何种字符编码,您都将无法编辑自己的代码。您在文档中或使用HTTP标头指定。只有在完美的世界中,字符编码才能始终正确传输,即便如此,Macintosh和Windows也无法正确传输。

如果我在Macintosh或Windows中以真正支持所有可用编码系统的软件打开所谓“正确”编码的文档,我会看到如下消息:

-=-J(DOS)**--F1   Top L3     (Text) ----------------------------------------
These default coding systems were tried to encode text
in the buffer:
  (iso-2022-7bit-dos (284 . 4194194) (379 . 4194194) (462 . 4194195)
  (492 . 4194196) (635 . 4194195) (640 . 4194196) (642 . 4194195) (772
  . 4194196) (833 . 4194195) (839 . 4194196) (857 . 4194195))
  (utf-8-dos (284 . 4194194) (379 . 4194194) (462 . 4194195) (492
  . 4194196) (635 . 4194195) (640 . 4194196) (642 . 4194195) (772
  . 4194196) (833 . 4194195) (839 . 4194196) (857 . 4194195))
However, each of them encountered characters it couldn't encode:
  iso-2022-7bit-dos cannot encode these: \222 \222 \223 \224 \223 \224 \223 \224 \223 \224 ...
  utf-8-dos cannot encode these: \222 \222 \223 \224 \223 \224 \223 \224 \223 \224 ...

Click on a character (or switch to this window by `C-x o'
and select the characters by RET) to jump to the place it appears,
where `C-u C-x =' will give information about it.

Select one of the safe coding systems listed below,
or cancel the writing with C-g and edit the buffer
   to remove or modify the problematic characters,
or specify any other coding system (and risk losing
   the problematic characters).

  thai-tis620

请记住,只要数据不在您的服务器上,例如,放在电子邮件等中,就无法保证编码的传递,并且可能不是。字节标记和其他不可见的识别文档的方法不能像承诺的那样工作,更不用说HTTP标题等瞬态方法,一旦文档超出您自己精心配置的HTTP服务器的上下文,就会丢失。

HTML的指导原则是它是一种纯文本标记语言,在正确使用时,与支持最基本文本的任何系统普遍兼容。 HTML文档应该将HTML实体用于普通7位US-ASCII字符集之外的任何字符。根据所使用的编码,任何其他字符都有不同的二进制定义,甚至可能在单字节和多字节表示之间有所不同。

在非HTML文档中,您可以随意使用原始符号,因为当您将它们嵌入到本机文件格式或HTML中时,您可以确保指定“正确”的字符编码,即将要指定的那个您创作它的系统以及与之兼容的任何系统都可以识别。