1
0
mirror of https://github.com/php/doc-ru.git synced 2026-03-26 00:32:15 +01:00
Files
archived-doc-ru/reference/strings/functions/utf8-encode.xml
2024-05-21 01:53:59 +03:00

243 lines
8.1 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?xml version="1.0" encoding="utf-8"?>
<!-- EN-Revision: b676d0b9c968ebb0b7429835f2f6bd364275eed1 Maintainer: sergey Status: ready -->
<!-- Reviewed: no -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.utf8-encode">
<refnamediv>
<refname>utf8_encode</refname>
<refpurpose>Преобразовывает строку из кодировки ISO-8859-1 в кодировку UTF-8</refpurpose>
</refnamediv>
<refsynopsisdiv>
&warn.deprecated.function-8-2-0;
</refsynopsisdiv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>string</type><methodname>utf8_encode</methodname>
<methodparam><type>string</type><parameter>string</parameter></methodparam>
</methodsynopsis>
<para>
Функция преобразовывает строку <parameter>string</parameter> из кодировки
<literal>ISO-8859-1</literal> в кодировку <literal>UTF-8</literal>.
</para>
<note>
<para>
Функция не пытается угадать текущую кодировку предоставленной строки, а предполагает,
что строку закодировали в кодировке ISO-8859-1 (которую также знают как Latin 1) и преобразовывает строку в кодировку UTF-8.
Поскольку каждая последовательность байтов — корректная строка в кодировке ISO-8859-1,
это никогда не приводит к ошибке, но не приведёт к получению полезной строки,
если предполагалась другая кодировка.
</para>
<para>
Многие веб-страницы, отмеченные как использующие кодировку
<literal>ISO-8859-1</literal>, на самом деле используют схожую кодировку
<literal>Windows-1252</literal>, и браузеры интерпретируют
страницы <literal>ISO-8859-1</literal> как <literal>Windows-1252</literal>.
Однако кодировка <literal>Windows-1252</literal> содержит дополнительные печатаемые
символы наподобие знака Евро (<literal></literal>) и фигурные кавычки
(<literal></literal> <literal></literal>) вместо управляющих кодов
<literal>ISO-8859-1</literal>. Эта функция не конвертирует такие
<literal>Windows-1252</literal>-символы корректно. Если требуется преобразование
из кодировки <literal>Windows-1252</literal>, пользуются другой функцией.
</para>
</note>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>string</parameter></term>
<listitem>
<para>
Строка ISO-8859-1.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает строку <parameter>string</parameter>, которую она преобразовала в кодировку в UTF-8.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.2.0</entry>
<entry>
This function has been deprecated.
</entry>
</row>
<row>
<entry>7.2.0</entry>
<entry>
Функция перенесли из модуля XML в ядро PHP.
В предыдущих версиях функция была доступна только при установленном модуле XML.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<example>
<title>Простой пример</title>
<programlisting role="php">
<![CDATA[
<?php
// Преобразование строки 'Zoë' из ISO 8859-1 в UTF-8
$iso8859_1_string = "\x5A\x6F\xEB";
$utf8_string = utf8_encode($iso8859_1_string);
echo bin2hex($utf8_string), "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
5a6fc3ab
]]>
</screen>
</example>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<title>Устаревание и альтернативы</title>
<para>
С PHP 8.2.0 функция <emphasis>устарела</emphasis> и её удалят в будущей версии.
Требуется проверить и заменить вызовы этой функции в коде альтернативынми функциями.
</para>
<para>
Аналогичную функциональность даёт функция <function>mb_convert_encoding</function>,
которая поддерживает кодировку ISO-8859-1 и многие другие кодировки символов.
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$iso8859_1_string = "\xEB"; // Буква «ë» (e с диерезисом) в кодировке UTF-8
$utf8_string = mb_convert_encoding($iso8859_1_string, 'UTF-8', 'ISO-8859-1');
echo bin2hex($utf8_string), "\n";
$iso8859_7_string = "\xEB"; // Та же строка в кодировке ISO-8859-7 представляет символ «λ» (греческая строчная лямбда)
$utf8_string = mb_convert_encoding($iso8859_7_string, 'UTF-8', 'ISO-8859-7');
echo bin2hex($utf8_string), "\n";
$windows_1252_string = "\x80"; // Символ «€» (знак евро) в кодировке Windows-1252, но не в кодировке ISO-8859-1
$utf8_string = mb_convert_encoding($windows_1252_string, 'UTF-8', 'Windows-1252');
echo bin2hex($utf8_string), "\n";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
c3ab
cebb
e282ac
]]>
</screen>
</informalexample>
</para>
<para>
Другие опции, которые могут быть доступны в зависимости от установленных модулей:
<methodname>UConverter::transcode</methodname> и <function>iconv</function>.
</para>
<para>
Каждый следующий вариант даёт одинаковый результат:
<informalexample>
<programlisting role="php">
<![CDATA[
<?php
$iso8859_1_string = "\x5A\x6F\xEB"; // 'Zoë' в 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";
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
5a6fc3ab
5a6fc3ab
5a6fc3ab
5a6fc3ab
]]>
</screen>
</informalexample>
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>utf8_decode</function></member>
<member><function>mb_convert_encoding</function></member>
<member><methodname>UConverter::transcode</methodname></member>
<member><function>iconv</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->