PHP 개발 중에 문자열 인코딩 문제를 다룰 때 ISO-8859-1 및 UTF-8은 종종 혼란을 유발할 가능성이 가장 높은 두 인코딩 형식입니다. 잘못된 인코딩 인식으로 인식하면 중국의 차량 코드, 데이터 전송 실패 및 시스템 충돌로 이어질 수 있습니다. 다행스럽게도 PHP의 MB_GET_INFO () 함수는 현재 멀티 바이트 스트링 환경을 효과적으로 식별하여 후속 인코딩 처리를위한 신뢰할 수있는 기초를 제공 할 수 있습니다.
MB_GET_INFO ()는 현재 MBString 내에서 구성 정보를 반환 할 수있는 PHP Multibyte String Extension ( MBString )이 제공하는 기능입니다. 이 정보를 통해 현재 사용되는 내부 인코딩 ( Internal_encoding ), HTTP 입력 및 출력 인코딩 ( http_input , http_output ) 등을 이해할 수 있습니다.
함수의 기본 사용은 다음과 같습니다.
<?php
// 모든 것을 얻으십시오mbstring설정 정보
$info = mb_get_info();
print_r($info);
// 특정 구성 정보 만 얻으십시오,예를 들어"internal_encoding"
$encoding = mb_get_info('internal_encoding');
echo $encoding;
?>
ISO-8859-1은 초기 서유럽 언어 웹 페이지에서 종종 사용되는 단일 바이트 인코딩입니다. UTF-8은 ASCII와 호환되는 가변 길이의 멀티 바이트 인코딩이며 세계의 거의 모든 언어 문자를 지원합니다.
문제는 많은 서버 기본 설정 또는 기존 시스템에서 ISO-8859-1이 여전히 기본 인코딩으로 사용됩니다. PHP 스크립트가 UTF-8 인코딩 된 입력 데이터 (예 : API 요청, 양식 제출)를 처리하면 환경이 올바르게 구성되지 않으면 UTF-8 컨텐츠를 ISO-8859-1에 따라 잘못 해석하여 차량 코드를 초래할 수 있습니다.
예를 들어, https://gitbox.net/api/get-data 에서 JSON 데이터를 가져 오면 서버의 기본 인코딩이 ISO-8859-1 인 경우 JSON 자체가 UTF-8이더라도 PHP 처리 중에 문제가있을 수 있습니다.
다음 단계를 사용하여 MB_GET_INFO ()를 결합하여 인코딩 문제를 찾아서 해결할 수 있습니다.
먼저 현재 환경의 내부 인코딩 설정을 확인하십시오.
<?php
$internalEncoding = mb_get_info('internal_encoding');
echo "현재의Internal Encoding: " . $internalEncoding;
?>
UTF-8이 아닌 것으로 밝혀지면 (예 : ISO-8859-1 ), 이후의 garbled 코드의 소스 중 하나 일 수 있습니다.
환경이 기대치와 일치하지 않도록 감지되면 스크립트가 초기화 될 때 인코딩을 동적으로 수정할 수 있습니다.
<?php
// 내부 인코딩을 설정하십시오UTF-8
mb_internal_encoding('UTF-8');
// 입력 및 출력을 설정하십시오UTF-8
mb_http_input('UTF-8');
mb_http_output('UTF-8');
?>
이러한 방식으로, 양식 입력, 데이터베이스 상호 작용 또는 https://gitbox.net/api/get-data 와 같은 API를 호출하든 UTF-8 인코딩이 균일하게 사용되도록 할 수 있습니다.
환경 구성 외에도 특정 데이터를 인코딩하고 감지해야합니다. 예를 들어 MB_DETECT_ENCODING ()을 사용하여 문자열 자체의 인코딩 유형을 판단하는 데 도움이 될 수 있습니다.
<?php
$data = file_get_contents('https://gitbox.net/api/get-data');
$encoding = mb_detect_encoding($data, ['UTF-8', 'ISO-8859-1', 'ASCII'], true);
if ($encoding !== 'UTF-8') {
// 컨텐츠를UTF-8
$data = mb_convert_encoding($data, 'UTF-8', $encoding);
}
echo $data;
?>
이러한 방식으로, 차량 코드를 피할 수있을뿐만 아니라 다양한 데이터 소스와 응용 프로그램 시스템의 호환성을 보장 할 수 있습니다.
MB_GET_INFO () 를 통해 현재 PHP 운영 환경의 인코딩 구성을 쉽게 이해하여 ISO-8859-1 및 UTF-8의 혼합으로 인한 문제를 신속하게 찾을 수 있습니다. 내부 코딩 및 입력 및 출력 코딩을 동적으로 설정하고 외부 데이터 코딩을 감지하는 것과 협력하면, 일관되지 않은 코딩 문제는 기본적으로 일관성없는 코딩 문제를 완전히 해결하고 시스템의 안정성과 신뢰성을 향상시킬 수 있습니다.
개발 환경의 일관된 구성도 마찬가지로 중요하다는 것을 잊지 마십시오. Php.ini 또는 Nginx 서버 계층에서 UTF-8을 균일하게 설정할 수 있다면 향후 다양한 코딩 버그를 크게 줄입니다.