4

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

我确实知道一件事:显然,它的ENT_QUOTES不同之处ENT_COMPAT在于它还转义了单引号。假设我知道仅此一项不会破坏任何东西,还有其他东西吗?

不同的说法:

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

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

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

4

2 回答 2

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 输入时,输出将是相同的。

于 2010-01-07T20:04:45.543 回答
-1

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

于 2010-01-07T20:03:13.030 回答