Оглавление

15.7. Преобразование кодировок

С помощью функции convert_cyr_string() можно преобразовать строку из одной кодировки в другую. 
Функция имеет следующий формат:
convert_cyr_string(<Исходная строка>, <Исходная кодировка>, <Нужная кодировка>);
Параметры  <Исходная  кодировка>  и  <Нужная  кодировка>  могут  принимать следующие значения:
□ a или d — кодировка x-cp866;
□ i — кодировка iso8859-5;
□ k — кодировка KOI8-R;
□ m — кодировка x-mac-cyrillic;
□ w — кодировка windows-1251 (cp1251).
Пример использования функции:

$str = "уФТПЛБ";
echo convert_cyr_string($str, "k", "w");
// Выведет: Строка

 

Функция iconv() также преобразовывает символы строки из одной кодировки в другую. Функция имеет следующий формат:
iconv(<Исходная кодировка>, <Нужная кодировка>[<Флаг>], <Исходная строка>);

Пример  преобразования  строки  из  кодировки windows-1251  в  кодировку UTF-8:

$str = iconv("windows-1251", "UTF-8", "Строка");


Необязательный параметр <Флаг> может принимать следующие значения:
□  //TRANSLIT —  если  символа нет  в нужной кодировке, он  заменяется одним или несколькими аналогами;
□ //IGNORE — символы, которых нет в нужной кодировке, будут опущены.

 

Зачем  нужен  это  параметр? Если мы  преобразовываем  кодировку windows-1251 в UTF-8, то в этом параметре нет необходимости. А вот если наоборот, то может возникнуть ситуация, что символа нет в нужной кодировке, так как  кодировка UTF-8 позволяет хранить несколько тысяч символов, а кодировка
windows-1251 только 256 символов. Если не указать этот параметр, то строка будет обрезана до первого недопустимого символа. Пример:

$str = iconv("UTF-8", "windows-1251//IGNORE", "Строка");


Вместо  функции  iconv()  можно  использовать  функцию mb_convert_encoding(). Функция имеет следующий формат:

mb_convert_encoding(<Исходная строка>, <Нужная кодировка>, <Исходная кодировка>);
Пример  преобразования  строки  из  кодировки UTF-8  в  кодировку windows-1251:

$str = mb_convert_encoding("Строка", "windows-1251", "UTF-8");



Примечания:
  • ОБРАТИТЕ ВНИМАНИЕ
    Порядок следования параметров в функции mb_convert_encoding() отличается от порядка в функции iconv().
Комментарии принадлежат их авторам. Мы не несем ответственности за их содержание.
Отправитель Нити