Конвертация кодировок utf-8 и win-1251 в PHP через iconv

Обычно php страница или сайт имеет одну базовую кодировку. Я работаю только с  UTF-8, но бывают случаи, когда приходится использовать какой-нибудь php файл с кодировкой win-1251, а передаваемые в него значения идут в кодировке UTF-8. В этом случае после исполнения скрипта появляются кракозябры.

Таких ситуаций может быть множество, например, при использовании функции отправки сообщений mail(), работе с PDF обработкой или даже при различных действиях с БД. В идеале нужно обязательно избавляться от таких хвостов и не допускать в коде функции конвертации, но если это просто невозможно, то на помощь вам придет функция iconv.

Синтаксис функции: $string= iconv('начальная кодировка', 'конечная кодировка', $string);

Здесь $string - строка, кодировку которой мы изменяем

Из этого выходит, что для того, чтобы преобразовать строку из кодировки utf-8 в win-1251 нужно писать следующее: $string= iconv('utf-8', 'win-1251', $string);

Из win-1251 в utf-8: $string= iconv('win-1251', 'utf-8', $string);

На заметку, помните, что кодировку в php странице можно указывать за счет установки header-а документа. Например, если ваша страница в UTF-8 без BOM, то в самом начале документа ставьте: <?php header("Content-Type: text/html; charset=utf-8");?>. Если же windows 1251, то сам документ должен быть в ANSI, а в первой строке можете поставить: <?php header("Content-Type: text/html; charset=windows-1251");?>. Иногда эти манипуляции помогают с письмами, которые приходят в кракозябрах из-за неверной кодировки.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Введите капчу: