두 함수 mb_detect_encoding 및 mb_check_encoding의 논리를 이해하려고하지만 설명서가 좋지 않습니다. 윈도우 1252 인코딩을 사용하는 경우 소문자 아주 간단한 테스트 문자열PHP의 mb_detect_encoding 및 mb_check_encoding 함수의 결과 이해
$string = "\x65\x92";
을 시작으로 'A'곱슬 따옴표 하였다.
나는 다음과 같은 결과를 얻을 :
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
detect_encoding이 https://en.wikipedia.org/wiki/ISO/IEC_8859-1 및 https://en.wikipedia.org/wiki/Windows-1252에 따라 때, "윈도우 1252"문자열은 "ISO-8859-1"을 제공하지만 왜 이해가 안 돼요 바이트 x92는 ISO-8859-1이 아닌 Windows-1252 문자 인코딩에 정의됩니다.
둘째, detect_encoding이 false를 반환하는 방식을 이해하지 못했지만 check_encoding은 동일한 문자열 및 동일한 문자 인코딩에 대해 true를 반환 할 수 있습니다.
마지막으로, 왜 문자열이 모두 UTF-8, 엄격 모드로 감지되는지 이해할 수 없습니다. 바이트 x92는 UTF-8의 연속 바이트이지만이 문자열에서 시퀀스의 선두 바이트가 아닌 유효한 문자 바이트입니다.