PHP字符編碼的要求

以下類型的編碼能夠被 PHP 安全地使用。

  • 單字節(jié)編碼

    • ASCII兼容(ISO646 兼容),在 00h7fh 的范圍內(nèi)映射字符集。

  • 多字節(jié)編碼,

    • ASCII兼容,在 00h7fh 的范圍內(nèi)映射字符集。
    • 不使用 ISO2022 轉(zhuǎn)義序列(escape sequences)。
    • 單個字符以任意復(fù)合字節(jié)表達、不使用 00h7fh 的值。

有幾個不太可能用 PHP 運行的字符編碼例子。

JIS, SJIS, ISO-2022-JP, BIG-5

雖然用任何其中一個編碼來編寫 PHP 腳本可能無法工作,尤其是這些編碼的字符串以標識符(identifier)和字符(literal)出現(xiàn), 但通過設(shè)置 mbstring 透明地過濾編碼的函數(shù),你幾乎可以避免傳入的 HTTP 查詢使用這些編碼。

注意:

我們極度不贊成在內(nèi)部編碼中使用 SJIS、BIG5、CP936、CP949 和 GB18030,除非你熟悉解析器(parser)、掃描器(scanner)和該字符編碼。

注意:

當你用 PHP 連接到一個數(shù)據(jù)庫,為了易用性和性能,推薦在數(shù)據(jù)庫和內(nèi)部編碼使用一致的字符編碼。

如果你使用的是 PostgreSQL,數(shù)據(jù)庫里使用的編碼和 PHP 里使用的編碼可以是不同的,因為它支持字符集在前端和后端之間進行自動轉(zhuǎn)換。