假设我的项目始终是utf-8并且一直使用utf-8编码,如果我将 htmlspecialchars($var)
的所有出现更改为 htmlspecialchars($var, ENT_QUOTES, 'utf-8')
我确实知道一件事:显然,ENT_QUOTES
与ENT_COMPAT
的不同之处在于它也会逃脱单引号。假设我知道这一点不会破坏任何东西,还剩下其他什么吗?
措辞不同:
在没有charset参数的情况下使用 htmlspecialchars()时是否存在可想象的结果,仅从charset 给出数据,这与 htmlspecialchars()不同 使用 charset参数?
(在任何时候,htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES) !== htmlspecialchars($stringThatIsValidUTF8, ENT_QUOTES, 'utf-8')
?)
我的理解说不,永远不会。 Another question here on stackoverflow也暗示不。到目前为止,使用更改浏览我的项目沙箱也说不。但是,我不确定我是否会忽视某些事情。
答案 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。