ある文字エンコーディングの文字列を、別の文字エンコーディングに変換する

# mb_convert_encoding

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

mb_convert_encoding — ある文字エンコーディングの文字列を、別の文字エンコーディングに変換する

### 説明

function mb_convert_encoding(array|string `$string`, string `$to_encoding`, array|string|null `$from_encoding` = `null`): array|string|false

文字列 `string` の文字エンコーディングを、 `from_encoding` または現在の内部エンコーディングから `to_encoding` に変換します。 `string` が配列の場合、それに含まれる全ての文字列型の値が再帰的に変換されます。

### パラメータ

`string`

  変換する string または array

`to_encoding`

  変換したい文字エンコーディング。

`from_encoding`

  `string` を解釈するのに使われている 現在の文字エンコーディング。 配列またはカンマ区切りの文字列とすることで、 複数のエンコーディングを指定できます。 この場合、正しいエンコーディングを mb_detect_encoding() と同じアルゴリズムで推測します。

  `from_encoding` が省略されたり、 `null` だった場合は、 mbstring.internal_encoding setting が設定されていた場合、それを使います。 設定されていない場合は、 default_charset setting を使います。

  `to_encoding` や `from_encoding` に指定できる値は、 サポートされる文字エンコーディングを参照ください。

### 戻り値

成功時に、変換後の文字列または配列を返します。 失敗した場合に `false` を返します

### エラー / 例外

PHP 8.0.0 以降では、 `to_encoding` または `from_encoding` に不正なエンコーディングが渡された場合、 ValueError がスローされるようになりました。 これより前のバージョンでは、 `E_WARNING` が発生していました。

### 変更履歴

バージョン | 説明
--- | ---
8.2.0 | mb_convert_encoding() は、 以下のテキストでないエンコーディングを返さなくなりました: `"Base64"`, `"QPrint"`, `"UUencode"`, `"HTML entities"`, `"7 bit"`, `"8 bit"`
8.0.0 | `to_encoding` に不正なエンコーディングが渡された場合、 ValueError がスローされるようになりました。
8.0.0 | `from_encoding` に不正なエンコーディングが渡された場合、 ValueError がスローされるようになりました。
8.0.0 | `from_encoding` は、nullable になりました。
7.2.0 | この関数は、 `string` に 配列を受け入れるようになりました。 これより前のバージョンでは、文字列のみがサポートされていました。

### 例

例1 mb_convert_encoding() の例

    <?php
    /* 内部文字エンコーディングからSJISに変換 */
    $str = mb_convert_encoding($str, "SJIS");

    /* EUC-JPからUTF-7に変換 */
    $str = mb_convert_encoding($str, "UTF-7", "EUC-JP");

    /* JIS, eucjp-win, sjis-winの順番で自動検出し、UCS-2LEに変換 */
    $str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

    /* mbstring.language が "Japanese" の場合 "auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開される */
    $str = mb_convert_encoding($str, "EUC-JP", "auto");
    ?>

### 参考

- mb_detect_order() - 文字エンコーディング検出順序を設定あるいは取得する
- UConverter::transcode() - ある文字エンコーディングから別の文字エンコーディングに文字列を変換する
- iconv() - ある文字エンコーディングの文字列を、別の文字エンコーディングに変換する

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open