2012-12-05 191 views
1

的這是在PHP手冊的字符串數據類型http://php.net/manual/en/language.types.string.php編碼字符串

由於PHP並不規定的字符串一個特定的編碼下發現,人們可能會問字符串文字的編碼方式。例如,字符串「á」等同於「\ xE1」(ISO-8859-1),「\ xC3 \ xA1」(UTF-8,C形式),「\ x61 \ xCC \ x81」(UTF-8 ,D表格)還是其他可能的表示形式?答案是字符串將以它在腳本文件中編碼的任何方式進行編碼。因此,如果腳本是用ISO-8859-1編寫的,那麼字符串將被編碼爲ISO-8859-1等等。但是,如果啓用了Zend Multibyte,這不適用;在這種情況下,腳本可以用任意編碼(明確聲明或檢測到)編寫,然後轉換爲特定的內部編碼,然後編碼將用於字符串文字。請注意,腳本的編碼(或內部編碼,如果啓用Zend Multibyte)會受到一些限制 - 這幾乎總是意味着此編碼應該是ASCII的兼容超集,例如UTF-8或ISO-8859 -1。但是請注意,在初始和非初始轉換狀態下可以使用相同字節值的狀態相關編碼可能會有問題。

你能簡單地解釋一下這是什麼意思嗎?謝謝

回答

1

鑑於PHP並未規定字符串的特定編碼,一個 可能會疑惑字符串文字是如何編碼的。例如,是 字符串 「A」 等同於 「\ XE1」(ISO-8859-1), 「\ XC3 \ XA1」(UTF-8, 的CForm), 「\ X61 \ XCC \ X81」(UTF- 8,D表格)或其他可能的 表示?答案是字符串將以腳本文件編碼的方式進行編碼。因此,如果腳本是用ISO-8859-1編寫的 ,則該字符串將很快在ISO-8859-1和 中編碼。

聲明的這一部分說,如果你的網頁在編碼(UTF-8,C型)比「A」將等同於「\ XC3 \ XA1」你在php.ini中指定的編碼它的配置文件爲您的PHP腳本。

但是,如果啓用了Zend Multibyte,則這不適用;在該 情況下,腳本可以被寫入一個任意的編碼(這是 明確地聲明或者檢測),然後轉化到一定 內部編碼,然後將其將被用於 字符串文字的編碼。請注意,有對 編碼腳本的一些限制(或內部編碼,應該Zend的 多字節使能) - 這幾乎總是意味着該編碼 應該是ASCII的兼容超集,如UTF-8或ISO-8859-1。 但是請注意,該狀態依賴性編碼,其中相同的字節 值可以在初始的和非初始的移位狀態被使用可以是 問題。

到這裏,他們只是說,還有另外一個選擇,以指定的編碼,但現在你是在一個腳本做,但你的編碼必須與ASCII兼容超