PHP字符編碼的要求

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

  • 單字節(jié)編碼

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

  • 多字節(jié)編碼,

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

有幾個(gè)不太可能用 PHP 運(yùn)行的字符編碼例子。

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

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

注意:

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

注意:

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

如果你使用的是 PostgreSQL,數(shù)據(jù)庫(kù)里使用的編碼和 PHP 里使用的編碼可以是不同的,因?yàn)樗С肿址谇岸撕秃蠖酥g進(jìn)行自動(dòng)轉(zhuǎn)換。