mb_detect_encoding работает неправильно с Windows-1250 (CP1250)

У меня проблема с обнаружением CP1250 в mb_detect_encoding () , в моем случае я хочу обнаружить 3 кодирования:

mb_detect_encoding($string, 'UTF-8,ISO-8859-2,Windows-1250') 

Но Windows не поддерживает кодировки, любое решение?

Solutions Collecting From Web of "mb_detect_encoding работает неправильно с Windows-1250 (CP1250)"

mb_detect_encoding всегда «обнаруживает» однобайтовые кодировки. Вы можете прочитать об этом в документации для mb_detect_order :

В настоящее время mbstring реализует следующие фильтры обнаружения кодирования. Если есть некорректная последовательность байтов для следующих кодировок, обнаружение кодировки не удастся.

UTF-8, UTF-7, ASCII, EUC-JP, SJIS, eucJP-win, SJIS-win, JIS, ISO-2022-JP

Для ISO-8859-X, mbstring всегда определяет как ISO-8859-X.

Для UTF-16, UTF-32, UCS2 и UCS4 обнаружение кодировки будет прерываться всегда.

Выводы:

  1. Бессмысленно просить об обнаружении ISO-8859-2; он всегда будет говорить вам «да, вот и все» (если, конечно, он не обнаруживает сначала UTF-8).
  2. Windows-1250 не поддерживается, но даже если бы он работал точно так же, как ISO-8859-2.

В общем случае невозможно точно определить однобайтовые кодировки. Если вам нужно сделать это на PHP, вам нужно будет сделать это вручную; не ожидайте очень хороших результатов.

Невозможно отличить ISO-8859-2 от Windows-1250 или любого другого однобайтового кодирования от любой другой кодировки. mb_detect_encoding просто дает вам первую кодировку, которая действительна для данной строки, и оба значения одинаковы. Кодировки «Обнаруживать» по определению не возможны с какой-либо точностью.