Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用HTML符号实体而不是实际符号_Html - Fatal编程技术网

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

使用HTML符号实体而不是实际符号,html,Html,有什么特别的原因我应该使用HTML符号实体而不是实际的符号,我的意思是我可以直接键入的符号?例如符号/;它的HTML实体代码是&47 我应该在HTML代码中使用符号的代码还是符号本身,以及为什么使用?否 只有在以下情况下,实体和字符引用才有用: 字符在HTML中有特殊意义,在您想要使用字符/永远不会使用字符的地方,它只在您无法使用/as数据的地方有特殊意义。 您不能键入字符,例如,因为它没有出现在键盘上。 您不能将文件编码为UTF-8或其他包含它的编码…和/或以ASCII显示。 没有 只有在以下

有什么特别的原因我应该使用HTML符号实体而不是实际的符号,我的意思是我可以直接键入的符号?例如符号/;它的HTML实体代码是&47

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

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

字符在HTML中有特殊意义,在您想要使用字符/永远不会使用字符的地方,它只在您无法使用/as数据的地方有特殊意义。 您不能键入字符,例如,因为它没有出现在键盘上。 您不能将文件编码为UTF-8或其他包含它的编码…和/或以ASCII显示。 没有

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

字符在HTML中有特殊意义,在您想要使用字符/永远不会使用字符的地方,它只在您无法使用/as数据的地方有特殊意义。 您不能键入字符,例如,因为它没有出现在键盘上。 您不能将文件编码为UTF-8或其他包含它的编码…和/或以ASCII显示。
除非您知道您将始终使用相同的软件和计算机系统来编辑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中时,您可以确保指定正确的字符编码,即。,您编写HTML的系统和与之兼容的任何系统都会识别它。

除非您知道您将始终使用相同的软件和计算机系统来编辑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中时,您可以确保指定正确的字符编码,即。,您编写它的系统以及与之兼容的任何系统将识别的实体。

使用HTML实体引用可以将实体表示为预期的注册 应用于文档的无失真编码。这就是好处

与严格使用实体来表示所有非美国ASCII字符不同,您可以为文档使用支持文档目标语言的编码,最好是支持其他语言(如UTF-8)的编码

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

过去,基于我自己的第一人称目击观察,数字HTML实体的可靠性肯定不如命名HTML实体,但在理论上,数字HTML实体仍然是独立于字符编码且安全的,因为数字值直接引用在UCS中注册的代码点,并等效于其定义的字符名

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

客户机传送给我的HTML文档直接嵌入符号,这些文档经常被破坏,无法恢复。这可能是因为美国基础设施薄弱,或者我的客户对如何发送他们的文档缺乏了解。如果一个国家的基础设施和人民的主要语言依赖于非ASCII字符,那么他们就更有可能支持和理解如何正确地传输他们的文档,而不会造成损坏

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

如果从编辑文档到向用户提供文档,您都无法控制文档,那么您可能不会在今天承担风险,但肯定会在最近几年内在美国承担风险。,这种可能性不仅仅是文档在过程中的某个时刻被不正确地转换,而且无论您试图以何种编码查看文档,文档都可能被永久损坏


使用HTML实体引用允许实体按预期的方式表示,而不考虑应用于文档的编码。这就是好处

与严格使用实体来表示所有非美国ASCII字符不同,您可以为文档使用支持文档目标语言的编码,最好是支持其他语言(如UTF-8)的编码

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

过去,基于我自己的第一人称目击观察,数字HTML实体的可靠性肯定不如命名HTML实体,但在理论上,数字HTML实体仍然是独立于字符编码且安全的,因为数字值直接引用在UCS中注册的代码点,并等效于其定义的字符名

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

客户机传送给我的HTML文档直接嵌入符号,这些文档经常被破坏,无法恢复。这可能是因为美国基础设施薄弱,或者我的客户对如何发送他们的文档缺乏了解。如果一个国家的基础设施和人民的主要语言依赖于非ASCII字符,那么他们就更有可能支持和理解如何正确地传输他们的文档,而不会造成损坏

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

如果从编辑文档到向用户提供文档,您都无法控制文档,那么您可能不会在今天承担风险,但肯定会在最近几年内在美国承担风险。,这种可能性不仅仅是文档在过程中的某个时刻被不正确地转换,而且无论您试图以何种编码查看文档,文档都可能被永久损坏


当您使用特殊字符时,必须使用符号,当您更改编码(如Ã和其他)时,这些字符可能会被误解。或者当你不想解释字符时,比如如果你真的想打字而不打断一行,为什么两个答案都被否决了呢?这个问题可能重复的问题已经被问了好几次了,形式略有不同。注意&47;不是实体,而是字符引用,并且在许多上下文中应包含尾随分号。很难想象您需要或想要使用/的引用的上下文-即使您的密钥已损坏,您通常也可以以某种方式输入它。当您使用特殊字符时,必须使用该符号,当您更改编码(如Ã等)时,这些字符可能会被误解。或者当您不想解释字符时,比如如果您想实际键入
为什么两个答案都被否决了呢?这个问题可能重复的问题已经被问了好几次了,措辞略有不同。注意&47;不是实体,而是字符引用,并且在许多上下文中应包含尾随分号。很难想象您需要或想要使用/(的引用)的上下文-即使您的密钥已损坏,您通常也可以以某种方式输入它。没有否决,但。。。因为你不能输入字符?如果你能找到它的数值,你可以复制粘贴它。Charmap等也很有用。没有否决,但是。。。因为你不能输入字符?如果你能找到它的数值,你可以复制粘贴它。Charmap等也很有用。糟糕的建议。如果你在使用英语网站,这很容易说出来,但是口述某人将一个(比如)日语文档中的所有字符作为实体保存,这使得使用该文档变得不可能。谢天谢地,我们已经跨过了这是一个问题的时代@deceze这里没有时代。日语和英语一样是计算机和互联网的母语,也许更是如此。至少和你一样,我喜欢将我的语言与HTML混合在一起的便利性,但我的经验告诉我这是无法维护的。类比中的错误是,您认为直接在HTML源代码中编写内容仍然是很自然的。那个时代结束了。内容和HTML/CSS现在已经完美地相互分离了。请再读一遍我的答案。日本网站的本机格式是什么?我是否需要从其他地方获取内容,然后以编程方式将其包装成HTML?你是这么说的吗?这是不可能的。在某种形式的源代码中,您仍然会使用日语字符,这意味着至少您需要以正确的编码正确处理该文件。为什么不直接用HTML呢?到目前为止,我已经多年没有遇到过日语和HTML混合的问题了。我的答案是基于对多种语言的经验,而不是一种语言。日语/HTML的兼容性问题确实存在,但在您的情况下,这些问题根本不重要,因为这些问题只存在于不会说日语并且没有设置用于访问日语网站的软件的人。如果您被迫在没有支持日文编码的软件(如UTF-8)的情况下编辑网页,您将无法编辑,因为即使您只是试图保存文档的HTML部分,该软件也无法保存文档。@deceze为什么一次又一次地关注日文?你实际上是在证明我的观点,而不是反驳它。如果你生活在一个单一语言的世界里,那么你永远不会有问题,也不用担心。HTML既不是英语也不是日语。我不是在争论语言问题,而是在文档脱离自己的web服务器或在其他编辑软件中打开后,任何人都无法控制文档的编码。最初的问题问了一个为什么字符引用有用的原因,我给出了一个诚实的答案。糟糕的建议。如果你在使用英语网站,这很容易说出来,但是口述某人将一个(比如)日语文档中的所有字符作为实体保存,这使得使用该文档变得不可能。谢天谢地,我们已经跨过了这是一个问题的时代@deceze这里没有时代。日语和英语一样是计算机和互联网的母语,也许更是如此。至少和你一样,我喜欢将我的语言与HTML混合在一起的便利性,但我的经验告诉我这是无法维护的。类比中的错误是,您认为直接在HTML源代码中编写内容仍然是很自然的。那个时代结束了。内容和HTML/CSS现在已经完美地相互分离了。请再读一遍我的答案。日本网站的本机格式是什么?我是否需要从其他地方获取内容,然后以编程方式将其包装成HTML?你是这么说的吗?这是不可能的。在某种形式的源代码中,您仍然会使用日语字符,这意味着至少您需要以正确的编码正确处理该文件。为什么不直接用HTML呢?到目前为止,我已经多年没有遇到过日语和HTML混合的问题了。我的答案是基于对多种语言的经验,而不是一种语言。日语/HTML的兼容性问题确实存在,但在您的情况下,这些问题根本不重要,因为这些问题只存在于不会说日语并且没有设置用于访问日语网站的软件的人。如果您被迫在没有支持日文编码的软件(如UTF-8)的情况下编辑网页,您将无法编辑,因为即使您只是试图保存文档的HTML部分,该软件甚至无法保存文档。@deceze为什么再次显示焦点
再谈日语?你实际上是在证明我的观点,而不是反驳它。如果你生活在一个单一语言的世界里,那么你永远不会有问题,也不用担心。HTML既不是英语也不是日语。我不是在争论语言问题,而是在文档脱离自己的web服务器或在其他编辑软件中打开后,任何人都无法控制文档的编码。最初的问题问了一个为什么字符引用有用的原因,我给出了一个诚实的答案。数字字符引用总是引用UCS代码点。因此,它们确实解决了编码兼容性问题。我在想油漆下面的东西。假设您知道UCS代码点,这是真的。如果您只是将所有多字节值转换为数字,那么这不是UCS代码点,而是一些随机值。解码器也是如此。我怀疑大多数浏览器在解码数字实体时是否有120万个包含所有代码点的项目数据库。现实世界中总是存在妥协,这就是我所说的世界。我相信你会说,现在每个人都有软件来正确地完成它。好的。但是堆栈溢出是为那些编写软件的人设计的,而不是为那些使用软件做任何事情的人设计的。我将重写我的答案,这样它就不会说没有兼容性好处,而是不是解决兼容性问题的灵丹妙药或其他东西。对不起,我不明白你在说什么。假设您通过代码点而不是随机数正确使用引用,并且假设浏览器确实正确理解数字引用并支持所讨论的字符,那么数字引用基本上消除了编码问题,因为您可以将文件编码为纯ASCII,几乎所有人都能正确理解。这就是我心目中的现实世界的优势。如果您没有正确使用引用,或者客户端不支持该字符,那么这一点毫无意义。@deceze谢谢。我们确实同意。最初的问题问的是为什么有人想使用实体而不是实际的符号。我正在回答这个问题。这些都是我几乎每天都会遇到的问题。我在第一次回答中给出的例子发生在本周的一封电子邮件文档中,该文档已正确附加,base64编码,但已损坏。通过推广UTF-8等有用的编码并消除人们对使用它们的恐惧,您正在令人钦佩地努力使世界变得更美好。继续这样做,希望现在出现的问题最终会消失。数字字符引用总是引用UCS代码点。因此,它们确实解决了编码兼容性问题。我在想油漆下面的东西。假设您知道UCS代码点,这是真的。如果您只是将所有多字节值转换为数字,那么这不是UCS代码点,而是一些随机值。解码器也是如此。我怀疑大多数浏览器在解码数字实体时是否有120万个包含所有代码点的项目数据库。现实世界中总是存在妥协,这就是我所说的世界。我相信你会说,现在每个人都有软件来正确地完成它。好的。但是堆栈溢出是为那些编写软件的人设计的,而不是为那些使用软件做任何事情的人设计的。我将重写我的答案,这样它就不会说没有兼容性好处,而是不是解决兼容性问题的灵丹妙药或其他东西。对不起,我不明白你在说什么。假设您通过代码点而不是随机数正确使用引用,并且假设浏览器确实正确理解数字引用并支持所讨论的字符,那么数字引用基本上消除了编码问题,因为您可以将文件编码为纯ASCII,几乎所有人都能正确理解。这就是我心目中的现实世界的优势。如果您没有正确使用引用,或者客户端不支持该字符,那么这一点毫无意义。@deceze谢谢。我们确实同意。最初的问题问的是为什么有人想使用实体而不是实际的符号。我正在回答这个问题。这些都是我几乎每天都会遇到的问题。我在第一次回答中给出的例子发生在本周的一封电子邮件文档中,该文档已正确附加,base64编码,但已损坏。通过推广UTF-8等有用的编码并消除人们对使用它们的恐惧,您正在令人钦佩地努力使世界变得更美好。继续这样做,希望现在存在的问题最终会消失。