将'utf-8'参数添加到htmlspecialchars()的出现 - 它可以破坏任何东西吗?

时间:2010-01-07 19:58:46

标签: php character-encoding escaping htmlspecialchars

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

我确实知道一件事:显然,ENT_QUOTESENT_COMPAT的不同之处在于它也会逃脱单引号。假设我知道这一点不会破坏任何东西,还剩下其他什么吗?

措辞不同:

在没有charset参数的情况下使用 htmlspecialchars()时是否存在可想象的结果,仅从charset 给出数据,这与 htmlspecialchars()不同 使用 charset参数?

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

我的理解说不,永远不会。 Another question here on stackoverflow也暗示不。到目前为止,使用更改浏览我的项目沙箱也说不。但是,我不确定我是否会忽视某些事情。

2 个答案:

答案 0 :(得分:5)

我认为另一个问题中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输入时,输出也是相同的。

答案 1 :(得分:-1)

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