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

pin*_*hic 4 php escaping character-encoding htmlspecialchars

假设我的项目始终是utf-8并且一直使用utf-8编码,如果我将所有出现的更改htmlspecialchars($var)htmlspecialchars($var, ENT_QUOTES, 'utf-8')?有什么合法可能会破坏吗?

我知道一件事:显然,ENT_QUOTES不同之处ENT_COMPAT在于它也逃脱了单引号.假设我知道这一点不会破坏任何东西,还有什么遗留下来的吗?

措辞不同:

在没有charset参数的情况下使用htmlspecialchars()时是否存在可想象的结果,仅使用来自charset的数据, charset参数一起使用时htmlspecialchars()不同?

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

我的理解说不,永远不会.stackoverflow上的另一个问题也表明没有.到目前为止,使用更改浏览我的项目沙箱也说不.但是,我不确定我是否会忽略某些东西.

Pek*_*ica 5

我认为另一个问题中PHP手册的引用肯定地回答了它:

出于此功能的目的,字符集ISO-8859-1,ISO-8859-15,UTF-8,cp866,cp1251,cp1252和KOI8-R实际上是等效的,因为受htmlspecialchars()影响的字符占用相同的字符在所有这些charsets中的位置.

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