@pustbay

Проблемы с кодировкой строки, как расшифровать?

Есть html код, из него получаю строку на кириллице, но у неё проблемы с кодировкой, пытаюсь расшифровать:

$str = 'Ð’ÑÑ‘ быÑтро и грамотно, можно по запиÑи или по очереди перÑонал вежливый и отзывчивый ðŸ‘';

$str = str_replace('',' ', $str); // В редакторе кода в str_replace отображаются спецсимволы, здесь их не видно
$str = str_replace('',' ', $str); // В редакторе кода в str_replace отображаются спецсимволы, здесь их не видно


$str = iconv('UTF-8', 'Windows-1252', $str); 
$str = iconv('Windows-1251', 'UTF-8', $str); 
$str = iconv('UTF-8', 'Windows-1251', $str); 


var_dump($str);


var_dump выдает:

string(158) "В� ё бы� тро и грамотно, можно по запи� и или по очереди пер� онал вежливый и отзывчивый �".


Подскажите, можно ли решить проблему и как.
  • Вопрос задан
  • 4481 просмотр
Решения вопроса 1
@pustbay Автор вопроса
По совету из комментария - https://qna.habr.com/answer?answer_id=2283648#answ...

Использовал универсальный декодер ( https://2cyr.com/decode/?lang=ru ), правда чтобы определить исходную и конечную кодировку потребовалось лезть в исходный код страницы. Нужная кодировка находятся в теге select c атрибутом name="sample" .

По какой-то причине функция iconv не хотела конвертировать из UTF-8 в Windows-1252 и выдавала false. Пришлось использовать функцию mb_convert_encoding. Получившийся код:

$str = 'ОформлÑли наÑледÑтво, Ñлышал от многих что у других долго, разные Ñправки ненужные проÑÑÑ‚ приноÑить, тут вÑÑ‘ чётко и по теме. ПроконÑультировали, Ñобрали вÑÑ‘ необходимое, Ð²Ñ€ÐµÐ¼Ñ Ð¼Ð¸Ð½Ð¸Ð¼ÑƒÐ¼. ПерÑонал приветливый.';

$str = mb_convert_encoding($str, "Windows-1252", "UTF-8");

var_dump($str);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Это UTF-8, показанный в кодировке Windows-1250. А буква "с" кривая, потому что под Windows-1250 она состоит из двух символов, один из которых - просто не может быть отображён (и видимо скопирован). Тоесть в первом слове, после первой Ñ должен идти ещё один символ.

А сайт Универсальный декодер поможет найти правильную комбинацию.
Ответ написан
Комментировать
toxa82
@toxa82
Убери замену символов, видно же что обрезается полсимвола и ставиться пробел. Или делай замену после декодирования и с помощью mb_* функций.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы