2

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

我应该在我的 HTML 代码中使用符号的代码还是符号本身,为什么?

4

3 回答 3

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 字符的国家的基础设施和人民将更有可能支持和理解如何正确传输他们的文档而不会损坏。

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

  • 如果从编辑文档到将文档提供给用户的过程中,您无法控制文档,那么您将面临风险(也许不是今天,但肯定是在美国的最近几年,这种可能性不仅仅是风险) 文档在途中的某个时间点被不正确地转换并被永久损坏,无论您尝试以何种编码查看它。

于 2013-05-16T20:19:18.370 回答
0

不。

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

  • 该字符在您想要使用该字符的地方在 HTML 中具有特殊含义(永远不会,它仅在您无论如何/都不能拥有 as 数据的地方具有特殊含义)。/
  • 您不能键入字符(例如,因为它没有出现在您的键盘上)。
  • 您不能将文件编码为 UTF-8(或包含它的另一种编码......并/以 ASCII 显示)。
于 2013-05-16T18:19:50.923 回答
-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 中时,您可以确保指定“正确”的字符编码,即,将被您创作它的系统以及与之兼容的任何系统。

于 2013-05-16T18:37:37.043 回答