php, ещё раз о кодировке

Суть сабжа в следующем.
Есть icecast2-сервер (это сервер вещания аудио), у него есть страничка, где выводится инфо о каналах.
Посредством php я забираю название текущего трека и вот тут-то поджидает проблема.
А заключается она в том, что песни с кириллическими названиями выглядят примерно так — "Àëèíà Ãðîñó — Ìåëîì íà àñôàëüòå".
Мне же надо, чтоб это был нормальный utf-8. Пробовал лебедевский декодер — он конвертит из cp1252 в cp1251.
пробовал сам и через iconv, и через mb_character_encoding конвертить из cp1252 в utf-8 = получаются ещё более жуткие крякозябры.
______________
Вот и спрашиваю совета у хабрасообщества — может есть какое-то решение?
  • Вопрос задан
  • 15510 просмотров
Решения вопроса 1
Ogra
@Ogra
"Àëèíà Ãðîñó — Ìåëîì íà àñôàëüòå" — вам приходит в какой кодировке?
Если это однобайтовая кодировка, то вам достаточно
$string = iconv('cp1251', 'utf-8', $string);


Если же это вам приходит в utf-8, то вам нужно сделать так:
$string = iconv('utf-8', 'cp1252', $string);
$string = iconv('cp1251', 'utf-8', $string);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
NeOn4eG
@NeOn4eG
и да, конвертировать надо CP1252 → CP1251 → UTF-8 (или сразу CP1252 → UTF-8), а не UTF-8 → CP1252, как делаете вы…
Ответ написан
@Kirill-Gorelov
С ума с IT
mb_detect_encoding($str); определяет кодировку. Только что сам использовал.
Знаю, что прошло 3 года, но уверен, еще кому-нибудь пригодится!
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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