代码之家  ›  专栏  ›  技术社区  ›  pinkgothic sudip

在出现的htmlspecialchars()中添加“utf-8”参数-它能破坏任何东西吗?

  •  4
  • pinkgothic sudip  · 技术社区  · 15 年前

    假设我的项目始终是utf-8,并且一直与utf-8编码一起使用,如果我更改所有出现的 htmlspecialchars($var) htmlspecialchars($var, ENT_QUOTES, 'utf-8') ?

    我知道一件事:显然, ENT_QUOTES 不同于 ENT_COMPAT 其中,它还漏掉了单引号。假设我知道这一点不会破坏任何东西,还有其他的吗?

    措辞不同:

    是否有可能的结果 HTML特殊字符() 在没有charset参数的情况下使用时, 仅从字符集提供数据 ,这与 HTML特殊字符() 使用时 具有 字符集参数?

    (在任何时候, htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES) !== htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES, 'utf-8') ?)

    我的理解是不,永远不会。 Another question here on stackoverflow 建议不要。到目前为止,浏览我的项目沙盒的变更也表示不,但是,我不确定我是否忽略了一些东西。

    2 回复  |  直到 7 年前
        1
  •  5
  •   Pekka    15 年前

    我认为另一个问题中的php手册的引言肯定回答了这个问题:

    在这个函数中,字符集iso-8859-1、iso-8859-15、utf-8、cp866、cp1251、cp1252和koi8-r实际上是等效的,因为受htmlspecialchars()影响的字符在所有这些字符集中占据相同的位置。

    " & > 等等,在每个编码中都有相同的代码,即使是在UTF-8中,它们也只需要一个字节,因为一个UTF-8字符只在必要时占用多个字节。因此,即使到目前为止您一直在使用ISO-8859-1处理UTF-8数据,当您切换到显式的UTF-8输入时,输出也是相同的。

        2
  •  -1
  •   erenon    15 年前

    不,这没有区别,因为如果您没有提供任何字符集,PHP会猜到,因此它将使用UTF-8。