Как узнать в какой кодировке строка и раскодировать ее?
Скажите, допустим у меня в переменной $text есть такая строка:
$text = "Äèðèæ¸ð Âëàäèìèð Ñïèâàêîâ";
Как я могу узнать в какой кодировке эта строка? Могу ли я как то преобразовать в читаемый текст?
mb_detect_encoding($text) - говорит что это UTF-8
Дополнительно:
Это запись в Windows-1251, отображаемая в UTF-8.
Ä == 0xC4 == Д
è == 0xE8 == и
ð == 0xF0 == р
...
Дирижёр Владимир Спиваков
- Спасибо! А как я могу это делать с помощью языка PHP? Определять кодировку и переводить в читаемый формат
- NkDev, IMHO, штатно никак. Только строить какие-то свои эвристические алгоритмы распознавания.
Если вы предполагаете, что текст набран кириллицей, то можно смотреть коды символов и пытаться найти их в разных кодировках кириллицы. К какой кодировке будет относиться больше символов, та, скорее всего, и использовалась. Один и тот же код может быть в разных кодировках.
Например, 0xE0 == a (Win1251) == Ю (КОИ-8) == р (CP866)
Но, Win1251 и КОИ-8 используют одни и те же коды, кроме букв ё и Ё. Так что такой метод тоже мало что даст. - Rsa97, Спасибо за помощь! Скажите, допустим я узнал что это кодировка WIN1251. Как я могу преобразовать теперь этот текст в читаемый на PHP?
echo mb_convert_encoding($d, 'UTF-8', 'WINDOWS-1252');
и
echo iconv('WINDOWS-1252', 'UTF-8', $d);
мне выводит кракозябры.
И еще, может быть знаете какие то готовые библиотеки? - NkDev,
$text = "Äèðèæ¸ð Âëàäèìèð Ñïèâàêîâ"; $text = iconv('utf-8//IGNORE', 'cp1252//IGNORE', $text); $text = iconv('cp1251//IGNORE', 'utf-8//IGNORE', $text); echo $text; // Дирижёр Владимир Спиваков
$text = "Äèðèæ¸ð Âëàäèìèð Ñïèâàêîâ"; $text = iconv('utf-8//IGNORE', 'cp1252//IGNORE', $text); $text = iconv('cp1251//IGNORE', 'utf-8//IGNORE', $text); echo $text; // Дирижёр Владимир Спиваков
Изврат, но работает.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы узнать в какой кодировке находится строка и раскодировать ее, можно воспользоваться различными методами в зависимости от языка программирования.
Если вы работаете с PHP, то для определения кодировки строки можно воспользоваться функцией mb_detect_encoding(). Эта функция позволяет определить кодировку текста. Пример использования:
$text = "Пример строки в UTF-8"; $encoding = mb_detect_encoding($text); echo "Кодировка строки: " . $encoding;
Чтобы раскодировать строку в нужную кодировку, можно воспользоваться функцией mb_convert_encoding(). Пример:
$text = "Пример строки в UTF-8"; $encoding = mb_detect_encoding($text); $text = mb_convert_encoding($text, "windows-1251", $encoding); echo "Раскодированная строка: " . $text;
Если вы работаете с другим языком программирования, то существуют аналогичные функции и методы для определения и изменения кодировки строки. Например, в Python можно воспользоваться методом encode() для изменения кодировки строки:
```python
text = "Пример строки в UTF-8"
encoding = text.encode('utf-8')
decoded_text = encoding.decode('windows-1251')
print("Раскодированная строка:", decoded_text)
```
Таким образом, выбрав подходящий язык программирования и метод определения и изменения кодировки строки, вы сможете успешно решить данную задачу.