Как узнать в какой кодировке строка и раскодировать ее?

Ссылка скопирована
1 ответ

Скажите, допустим у меня в переменной $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; // Дирижёр Владимир Спиваков

    Изврат, но работает.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Игорь Волков Ответ

Для того чтобы узнать в какой кодировке находится строка и раскодировать ее, можно воспользоваться различными методами в зависимости от языка программирования.

Если вы работаете с PHP, то для определения кодировки строки можно воспользоваться функцией mb_detect_encoding(). Эта функция позволяет определить кодировку текста. Пример использования:

$text = "Пример строки в UTF-8";
$encoding = mb_detect_encoding($text);
echo "Кодировка строки: " . $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;

$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)
```

Таким образом, выбрав подходящий язык программирования и метод определения и изменения кодировки строки, вы сможете успешно решить данную задачу.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно