Понимание результатов функций PHP mb_detect_encoding и mb_check_encodingPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Понимание результатов функций PHP mb_detect_encoding и mb_check_encoding

Сообщение Anonymous »

Я пытаюсь понять логику двух функций mb_detect_encoding и mb_check_encoding, но документация плохая. Начнем с очень простой тестовой строки

Код: Выделить всё

$string = "\x65\x92";
Это строчная буква «а», за которой следует фигурная кавычка при использовании кодировки Windows-1252.
Я получаю следующие результаты:

Код: Выделить всё

mb_detect_encoding($string,"Windows-1252"); // false
mb_check_encoding($string,"Windows-1252"); // true
mb_detect_encoding($string,"ISO-8859-1"); // ISO-8859-1
mb_check_encoding($string,"ISO-8859-1"); // true
mb_detect_encoding($string,"UTF-8",true); // false
mb_detect_encoding($string,"UTF-8"); // UTF-8
mb_check_encoding($string,"UTF-8"); // false
[*]Я не понимаю, почему mb_detect_encoding выдает для строки «ISO-8859-1», а не «Windows-1252» , когда согласно https://en.wikipedia.org/wiki/ISO/IEC_8859-1 и https://en.wikipedia.org/wiki/Windows-1252, байт x92 определен в кодировке символов Windows-1252, но не в ISO-8859-1.
< /li>
Во-вторых, я не понимаю, как mb_detect_encoding может возвращать false, а mb_check_encoding может возвращать true для той же строки и той же кодировки символов.

[*]Наконец, я не понимаю, почему строку можно обнаружить как UTF-8, строгий режим или нет. Байт x92 является байтом продолжения в UTF-8, но в этой строке он следует за допустимым символьным байтом, а не за ведущим байтом последовательности.



Подробнее здесь: https://stackoverflow.com/questions/399 ... g-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»