웹 인코딩 감지 또는 처리를 수행 할 때 PHP의 MB_GET_INFO () 함수는 현재 멀티 바이트 스트링 설정에 대한 정보를 제공 할 수 있습니다. 그러나 실제로 사용하는 동안 개발자는 종종 몇 가지 문제에 직면합니다. 이 기사는 MB_GET_INFO ()를 사용하여 웹 인코딩을 확인할 때 일반적인 오류 및 솔루션을 요약합니다.
오류 설명 : MB_GET_INFO ()를 직접 호출하지만 시스템은 함수를 찾을 수 없다고 프롬프트합니다.
원인 분석 : MB_GET_INFO ()는 MBString 확장에 속합니다. PHP가 MBString을 설치하거나 활성화하지 않으면 관련 기능을 호출 할 때 오류가 발생합니다.
해결 방법 : php.ini 파일에서 MBString 확장이 활성화되어 있는지 확인하십시오. 예를 들어:
extension=mbstring
서버가 설치되지 않은 경우 다음 명령을 참조하여 설치할 수 있습니다 (예시 Ubuntu 복용).
sudo apt-get install php-mbstring
sudo service apache2 restart
설치 후 테스트 페이지를 방문하십시오.
https://gitbox.net/test_mb.php
mb_get_info ()가 정상적으로 작동하는지 확인하십시오.
오류 설명 : MB_GET_INFO ()가 웹 페이지 컨텐츠의 인코딩 정보를 직접 반환하고 결과는 구성 배열이되기를 바랍니다.
원인 분석 : MB_GET_INFO ()는 웹 페이지의 실제 인코딩을 직접 알려주는 대신 PHP MBString 구성 (예 : 내부 인코딩, 언어 설정 등)의 현재 상태를 반환합니다.
해결 방법 : 웹 페이지 컨텐츠의 실제 인코딩을 감지하려면 MB_GET_INFO () 대신 MB_DETECT_ENCODING ()을 사용해야합니다.
예:
$content = file_get_contents('https://gitbox.net/page.html');
$encoding = mb_detect_encoding($content, mb_list_encodings(), true);
echo "웹 인코딩이있을 수 있습니다:$encoding";
오류 설명 : MB_GET_INFO ()는 내부 인코딩을 확인하는 데 사용되지만 멀티 바이트 문자열을 처리 할 때는 갈색 코드가 여전히 발생합니다.
원인 분석 : 기본 내부 인코딩은 UTF-8이 아니기 때문에 MB_Strlen () 및 MB_SUBSTR () 과 같은 함수가 예외를 반환합니다.
솔루션 : 처리하기 전에 다음과 같은 올바른 내부 인코딩을 적극적으로 설정하십시오.
mb_internal_encoding('UTF-8');
그런 다음 mb_get_info () 에게 전화하여 설정이 성공했는지 확인하십시오.
print_r(mb_get_info());
오류 설명 : mb_get_info ()를 호출 할 때 매개 변수가 전달되지 않았으며 얻은 정보로는 충분하지 않았습니다.
원인 분석 : mb_get_info ()는 특정 항목을 쿼리하기 위해 문자열 매개 변수 ( "http_input" , "http_output" , "internation_encoding" 등을 전달할 수 있습니다. 매개 변수가 전달되지 않으면 모든 정보가 반환됩니다.
솔루션 : 내부 인코딩과 같은 특정 항목 만 확인하려면 다음과 같이 쓸 수 있습니다.
$encoding = mb_get_info("internal_encoding");
echo "현재 내부 코드는 다음과 같습니다:$encoding";
액세스 결과 예 :
https://gitbox.net/show_encoding.php
mb_get_info ()를 사용하여 웹 인코딩을 확인할 때 :
MBString 확장이 활성화되어 있는지 확인하십시오.
웹 페이지 인코딩을 감지하지 않고 쿼리 설정 상태임을 이해하십시오.
내부 인코딩을 올바르게 설정하고 확인하십시오.
요구 사항에 따라 적절한 매개 변수를 전달하십시오.
실제로 웹 페이지의 실제 인코딩을 감지 해야하는 경우 컨텐츠를 읽는 메소드와 함께 MB_DETECT_ENCODING ()을 사용하는 데 우선 순위를 두십시오.