【问题标题】:charset-utf8 and character entitiescharset-utf8 和字符实体
【发布时间】:2011-04-24 18:05:52
【问题描述】:

我提议将我的 windows-1252 XHTML 网页转换为 UTF-8。

我的编码中有以下字符实体:

  • ' — 撇号,
  • ► — 右指针,
  • ◄ — 左指针。

如果我使用编辑器更改字符集并将页面保存为 UTF-8:

  • 撇号作为字符实体保留;
  • 指针被转换为代码中的符号(可能是因为实体在 UTF-8 中不受支持?)。

问题:

  1. 如果我正确理解 UTF-8,您就不需要使用实体,可以直接在代码中输入字符。在哪种情况下,我可以将#39 替换为输入的撇号吗?

  2. 编辑器将指针符号直接放入我的代码中是否正确,并且这些符号会在现代浏览器上可靠地显示,似乎没问题?据推测,如果我使用 UTF-8,我无论如何都无法恢复实体?

谢谢。

【问题讨论】:

    标签: html encoding utf-8 editor html-entities


    【解决方案1】:

    如果您从文字处理器复制/粘贴内容或代码是 XML 方言,请使用实体。使用文本编辑器中的宏一次性查找/替换常见的宏。这是一个简单的列表:

    • 一半:½ => ½
    • 急性口音:é => é
    • 与号:& => &
    • 撇号:' => '
    • 反引号:' => `
    • 反斜杠:\ => \
    • 项目符号: • => •
    • 美元符号:$ => $
    • 美分符号:¢ => ¢
    • 省略号:… => …
    • Emdash: — => —
    • Endash:- => –
    • 左引号:“ => “
    • 右引号:” => ”

    参考文献

    【讨论】:

      【解决方案2】:

      实体有三个目的:编码无法使用所用字符编码的字符(与 UTF-8 无关),编码不方便在给定键盘上键入的字符,以及编码非法字符未转义。

      ► 应该总是产生 ► 无论是什么编码。如果没有,那就是其他地方的错误。

      直接在源代码中在 UTF-8 中很好。您可以这样做或实体,这没有区别。

      ' 在大多数情况下都可以,但在某些情况下则不然。以下都是允许的:

      <span title="Jon's example">This is Jon's example</span>
      

      但必须编码为:

      <span title='Jon&#x27;s example'>This is Jon's example</span>
      

      因为否则它将被视为结束属性值的'。

      【讨论】:

      • 谢谢乔恩,我的一些关键字包括撇号,你知道搜索引擎如何解释这些实体吗?例如,他们是否看到 widget#39;s 与 widget 的相同?我一直想知道他们是否停在实体上,只看到小部件。这将是我在这种情况下不使用实体的一个很好的理由。
      • 一个无法遵循 HTML 基本规则的搜索引擎,它知道源代码中的&amp;#39;' 相同(甚至&amp;#x4A;J,这样做没有多大意义)不值得担心。事实上,他们不仅会理解它是一个撇号,他们甚至会非常复杂地确定是否将撇号包含在将其与搜索词匹配等方面。
      【解决方案3】:

      这是字符集,不是图表集。

      1) 它取决于撇号的使用位置,它也是一个有效的 ASCII 字符,因此取决于字符意图(无论是仅用于显示(在 DOMText 节点内)还是在代码中使用),您可能会也可能不会能够使用文字撇号。

      2) 如果您的编辑器是现代编辑器,它将使用 utf 序列而不是 char 来显示文本。代码中使用的大多数序列只是普通的 ASCII(ASCII 是 utf8 的子集),因此这些字符将占用一个字节。其他字符可能以专门的方式占用两个、三个甚至四个字节。它们仍然会作为一个字符显示给你,但是字符和字节之间的关系已经不同了。

      无论如何;因为所有有效的 ASCII 字符在 ASCII、utf8 甚至 windows-1252 中都是完全相同的。你不应该看到使用 utf8 的任何问题。而且您仍然可以使用数字和命名实体,因为它们是用那些有效字符编写的。您只是不必这样做。

      附:所有现代浏览器都可以很好地处理 utf8。但我们对“现代”的定义可能会有所不同。

      【讨论】:

        猜你喜欢
        • 2011-11-04
        • 2021-03-17
        • 1970-01-01
        • 2016-05-24
        • 2012-01-04
        • 2013-05-23
        • 2015-03-07
        • 2012-12-13
        相关资源
        最近更新 更多