對大多數人來說可能很明顯,但
預設的過濾器清單比我預期的短
['ASCII','UTF-8'],以此順序。
大約在 2024 年,全球 60% 的網站宣告字元集為 'UTF-8'
因此,如果您正在試驗 UTF-8 以外的多位元組編碼,則必須指定您的 detect_order,從已實作的過濾器清單中選擇。
(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
mb_detect_order — 設定/取得字元編碼偵測順序
encoding
encoding
是一個 陣列 或以逗號分隔的字元編碼清單。請參閱 支援的編碼。
如果省略 encoding
或設為 null
,它會以陣列形式傳回目前的字元編碼偵測順序。
此設定會影響 mb_detect_encoding() 和 mb_send_mail()。
mbstring
目前實作下列編碼偵測過濾器。如果下列編碼出現無效的位元組序列,則編碼偵測將會失敗。
UTF-8
、UTF-7
、ASCII
、EUC-JP
、SJIS
、eucJP-win
、SJIS-win
、JIS
、ISO-2022-JP
對於 ISO-8859-*
,mbstring
一律偵測為 ISO-8859-*
。
對於 UTF-16
、UTF-32
、UCS2
和 UCS4
,編碼偵測將會一律失敗。
版本 | 說明 |
---|---|
8.0.0 |
encoding 現在可以為 null。 |
範例 #1 mb_detect_order() 範例
<?php
/* 使用列舉清單設定偵測順序 */
mb_detect_order("eucjp-win,sjis-win,UTF-8");
/* 使用陣列設定偵測順序 */
$ary[] = "ASCII";
$ary[] = "JIS";
$ary[] = "EUC-JP";
mb_detect_order($ary);
/* 顯示目前的偵測順序 */
echo implode(", ", mb_detect_order());
?>
範例 #2 顯示無效偵測順序的範例
; Always detect as ISO-8859-1 detect_order = ISO-8859-1, UTF-8 ; Always detect as UTF-8, since ASCII/UTF-7 values are ; valid for UTF-8 detect_order = UTF-8, ASCII, UTF-7