将字符串从 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`。

> 注意:

> This function does not attempt to guess the current encoding of the provided string, it assumes it is encoded as ISO-8859-1 (also known as "Latin 1") and converts to UTF-8. Since every sequence of bytes is a valid ISO-8859-1 string, this never results in an error, but will not result in a useful string if a different encoding was intended.

> Many web pages marked as using the `ISO-8859-1` character encoding actually use the similar `Windows-1252` encoding, and web browsers will interpret `ISO-8859-1` web pages as `Windows-1252`. `Windows-1252` features additional printable characters, such as the Euro sign (`€`) and curly quotes (`“` `”`), instead of certain `ISO-8859-1` control characters. This function will not convert such `Windows-1252` characters correctly. Use a different function if `Windows-1252` conversion is required.

### 参数

`string`

  ISO-8859-1 字符串。

### 返回值

返回 `string` 的 UTF-8 翻译。

### 更新日志

版本 | 说明
--- | ---
8.2.0 | 弃用此函数。
7.2.0 | This function has been moved from the XML extension to the core of PHP. In previous versions, it was only available if the XML extension was installed.

### 示例

示例 #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() - Convert a string from one character encoding to another
- iconv() - 将字符串从一个字符编码转换到另一个字符编码

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