ISO-8859-1 文字列を UTF-8 に変換する

# utf8_encode

(PHP 4, PHP 5, PHP 7, PHP 8)

utf8_encode — ISO-8859-1 文字列を UTF-8 に変換する

警告

この関数は PHP 8.2.0 で 非推奨になります。この関数に頼らないことを強く推奨します。

### 説明

#[\Deprecated]
function utf8_encode(string `$string`): string

この関数は、文字列 `string` を `ISO-8859-1` エンコードから `UTF-8` へ変換します。

> 注意:

> この関数は、指定された文字列の現在の文字エンコーディングを推測しません。 代わりに、 ISO-8859-1 ("Latin 1" とも呼ばれています) としてエンコードされていると解釈し、UTF-8 に変換します。 全てのバイト列は有効な ISO-8859-1 の文字列であるため、 この関数は決してエラーになりません。 しかし、異なるエンコーディングを意図していた場合、 有用な結果にはならないでしょう。

> `ISO-8859-1` 文字エンコーディングを使っているとマークされている 多くの Web ページが、実際にはそれと似た `Windows-1252` を使っており、 Web ブラウザは `ISO-8859-1` Web ページを `Windows-1252` として解釈しています。`Windows-1252` は `ISO-8859-1` のある制御文字の代わりに、ユーロ記号 (`€`) や curly quote (`“` `”`) を印字可能な文字として追加しています。 この関数はそうした `Windows-1252` 文字を正しく変換しません。 `Windows-1252` の変換が必要な場合は、別の関数を使ってください。

### パラメータ

`string`

  ISO-8859-1 形式の文字列。

### 戻り値

`string` を UTF-8 に変換した結果を返します。

### 変更履歴

バージョン | 説明
--- | ---
8.2.0 | この関数は、推奨されなくなりました。
7.2.0 | この関数は、XML拡張モジュール から PHP のコアに移動しました。 これより前のバージョンでは、 この関数は XML拡張モジュール をインストールしていた場合にのみ利用可能でした。

### 例

例1 基本的な例

    <?php
    // Convert the string 'Zoë' from ISO 8859-1 to UTF-8
    $iso8859_1_string = "\x5A\x6F\xEB";
    $utf8_string = utf8_encode($iso8859_1_string);
    echo bin2hex($utf8_string), "\n";
    ?>

上の例の出力は以下となります。

    5a6fc3ab

### 注意

> 注意: この関数は推奨されません。代替については下記のとおりです。

> この関数は、PHP 8.2.0 以降は 推奨されなくなり、 将来のバージョンで削除される予定です。 この関数を使っているコードをチェックし、適切な代替に置き換えるべきです。

> この関数と似た機能は、 mb_convert_encoding() で実現できます。 この関数は、ISO-8859-1 と、多くの他の文字エンコーディングをサポートしています。

>     <?php
>     $iso8859_1_string = "\xEB"; // 'ë' (e with diaeresis) in ISO-8859-1
>     $utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
>     echo bin2hex($utf8_string), "\n";

>     $iso8859_7_string = "\xEB"; // the same string in ISO-8859-7 represents 'λ' (Greek lower-case lambda)
>     $utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
>     echo bin2hex($utf8_string), "\n";

>     $windows_1252_string = "\x80"; // '€' (Euro sign) in Windows-1252, but not in ISO-8859-1
>     $utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
>     echo bin2hex($utf8_string), "\n";
>     ?>

> 上の例の出力は以下となります。

>     c3ab
>     cebb
>     e282ac

> 他の代替として、インストールされている拡張機能に依存した関数ですが、 UConverter::transcode() と iconv() が挙げられます。

> 次のコードは、いずれも同じ結果を返します:

>     <?php
>     $iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' in ISO-8859-1

>     $utf8_string = utf8_encode($iso8859_1_string);
>     echo bin2hex($utf8_string), "\n";

>     $utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
>     echo bin2hex($utf8_string), "\n";

>     $utf8_string = UConverter::transcode($iso8859_1_string, 'UTF8', 'ISO-8859-1');
>     echo bin2hex($utf8_string), "\n";

>     $utf8_string = iconv('ISO-8859-1', 'UTF-8', $iso8859_1_string);
>     echo bin2hex($utf8_string), "\n";
>     ?>

> 上の例の出力は以下となります。

>     5a6fc3ab
>     5a6fc3ab
>     5a6fc3ab
>     5a6fc3ab

### 参考

- utf8_decode() - UTF-8 エンコードされた文字列を、ISO-8859-1 に変換し、表現できない文字を置換する
- mb_convert_encoding() - ある文字エンコーディングの文字列を、別の文字エンコーディングに変換する
- UConverter::transcode() - ある文字エンコーディングから別の文字エンコーディングに文字列を変換する
- iconv() - ある文字エンコーディングの文字列を、別の文字エンコーディングに変換する

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