Я пытаюсь обнаружить кодировку символов строки, но я не могу получить правильный результат.
Например:Определение правильной кодировки символов в PHP?
$str = "€ ‚ ƒ „ …" ;
$str = mb_convert_encoding($str, 'Windows-1252' ,'HTML-ENTITIES') ;
// Now $str should be a Windows-1252-encoded string.
// Let's detect its encoding:
echo mb_detect_encoding($str,'Windows-1252, ISO-8859-1, UTF-8') ;
Этот код выводит ISO-8859-1
но это должно быть Windows-1252
.
Что случилось с этим?
EDIT:
Обновлен пример, в ответ на @ raina77ow.
$str = "€‚ƒ„…" ; // no white-spaces
$str = mb_convert_encoding($str, 'Windows-1252' ,'HTML-ENTITIES') ;
$str = "Hello $str" ; // let's add some ascii characters
echo mb_detect_encoding($str,'Windows-1252, ISO-8859-1, UTF-8') ;
Я снова получаю неправильный результат.
Какая версия PHP вы используете? Он правильно показывает здесь http://codepad.viper-7.com/NfvdWm. Кстати, вы всегда должны сначала перечислять UTF-8, потому что это самый ограниченный. ISO-8859-1, вероятно, вообще не требуется, поскольку что-то действительно соответствует ISO-8859-1. – Esailija
@ Esailija, вы не использовали код любого из двух примеров в вопросе. Попробуйте любой из двух примеров, и вы получите результат 'ISO-8859-1'. – GetFree