Задать вопрос
@Shimpanze

PHP: Почему 'mb_convert_encoding' не конвертирует простую строку?

Простая строка не преобразовывается в кодировку 'windows-1251'.

$str = 'Привет 2019 Мир!';
$str = mb_convert_encoding( $str, 'windows-1251', mb_detect_encoding( $str ) );
var_dump( $str );

// >>> string(16) "������ 2019 ���!"


Песочница с примером: https://3v4l.org/C1miiV
  • Вопрос задан
  • 149 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
- var_dump( $str );
+ echo bin2hex($str);
Получаем cf f0 e8 e2 e5 f2 20 32 30 31 39 20 cc e8 f0 21
Открываем таблицу cp1251 и смотрим
cf - П, f0 - р, e8 - и, e2 - в, e5 - е, f2 - т, 20 - пробел, 32 - 2, 30 - 0, 31 - 1, 39 - 9, 20 - пробел, cc - М, e8 - и, f0 - р, 21 - !
Привет 2019 Мир!
Всё вполне сконвертировалось.
Ответ написан
Комментировать
@alexalexes
$str = 'Привет 2019 Мир!'; // написано в той кодировке, в которой сохранен файл (хрустальный шар говорит, что utf-8)
$str = mb_convert_encoding( $str, 'windows-1251', mb_detect_encoding( $str ) ); // конвертируем в cp1251
header('Content-Type: text/html; charset=windows-1251'); // Откуда трабла с кодировкой? - не соответствие сообщаемой кодировки в http-заголовке от сервера, с выводимым контентом от сервера. Исправляется явным указанием заголовка
var_dump( $str ); // выводим в той кодировке, что выводит заголовок charset сервера в браузер (хрустальный шар говорит, что до указания header() было charset=utf-8)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
по тому что гладиолус документация?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы