mb_detect_encoding 文字エンコーディングを検出する &reftitle.description; stringfalsemb_detect_encoding stringstring arraystringnullencodings&null; boolstrict&false; エンコーディングの候補の一覧から、 文字列 string のもっとも可能性が高い文字エンコーディングを検出します。 追加の情報なしに、 意図した文字エンコーディングを自動で検出する行為は、 全く役に立ちません。 これは、暗号化された文字列を鍵なしにデコードする行為に似ています。 "Content-Type" HTTP ヘッダのような、 データを転送された際に付いてくる情報や、 保存された文字エンコーディングに関する指示を指定することが常に望ましいです。 この関数は、全ての文字列が正しいバイト配列とは限らない マルチバイト文字列を指定するともっとも役に立ちます。 入力となる文字列に誤ったバイトが含まれていた場合、 そのエンコーディングは採用されず、次のものを試します。 &reftitle.parameters; string 調べる対象の文字列。 encodings 文字エンコーディングの一覧を試す順番に指定します。 このリストは、文字列の配列または、 カンマ区切りのリストで指定できます。 encodings が省略された場合、 または &null; の場合、 現在の detect_order ( mbstring.detect_order 設定オプション または mb_detect_order で設定したもの) を使います。 strict encodings で指定された 文字エンコーディングのリストの全てに対して、 不正と判定された場合の振る舞いを指定します。 strict が &false; の場合、 もっとも近いと判定された文字エンコーディングが返されます。 strict を &true; にした場合、 &false; が返されます。 strict のデフォルト値は mbstring.strict_detection 設定オプションで指定できます。 &reftitle.returnvalues; 検出した文字エンコーディングを返します。 指定したエンコーディングの全てに対して、不正と判定された場合は &false; を返します。 &reftitle.changelog; &Version; &Description; 8.2.0 mb_detect_encoding は、 以下のテキストでないエンコーディングを返さなくなりました: "Base64", "QPrint", "UUencode", "HTML entities", "7 bit", "8 bit" &reftitle.examples; <function>mb_detect_encoding</function> の例 ]]> <parameter>strict</parameter> パラメーターの効果 ]]> &example.outputs; 場合によっては、同じバイト配列が、 複数の文字エンコーディング的に正しいかもしれませんが、 どの解釈が意図されたものなのかを知ることは不可能です。 たとえば、 バイト配列 "\xC4\xA2" は、 以下のように解釈できます: "Ä¢" (U+00C4 LATIN CAPITAL LETTER A WITH DIAERESIS のあとに、U+00A2 CENT SIGN が続いたもの) これらは、ISO-8859-1, ISO-8859-15, Windows-1252 でエンコードされたものと解釈できます。 "ФЂ" (U+0424 CYRILLIC CAPITAL LETTER EF のあとに、 U+0402 CYRILLIC CAPITAL LETTER DJE が続いたもの) これは、ISO-8859-5 でエンコードされたものと解釈できます。 "Ģ" (U+0122 LATIN CAPITAL LETTER G WITH CEDILLA) これは、UTF-8 でエンコードされたものと解釈できます。 複数のエンコーディングと一致した場合の効果 ]]> &example.outputs; &reftitle.seealso; mb_detect_order