Multibyte 현 (예 : 중국어, 일본어, 한국 등)을 다룰 때 PHP는 Multibyte String Extension ( MBString )을 제공하여 이러한 문자를 올바르게 처리합니다. 그 중에서 MB_GET_INFO () 및 MB_INTERNAL_ENCODING () 은 현재 문자 인코딩 설정을보고 설정하는 데 사용되는 두 가지 매우 중요한 기능입니다. 이 기사는이 두 기능에 대해 더 많이 배우고 예제를 통해 실제 응용 프로그램에서 어떻게 사용되는지 보여줍니다.
mb_internal_encoding () 에는 두 가지 기능이 있습니다.
현재 내부 문자 인코딩을 가져옵니다
현재 내부 문자 인코딩을 설정하십시오
내부 문자 인코딩은 mb_strlen () 및 mb_substr () 와 같은 함수의 동작에 영향을 미칩니다.
<?php
// 현재 내부 코드를 얻으십시오
$currentEncoding = mb_internal_encoding();
echo "현재 내부 인코딩: $currentEncoding\n";
// 새 인코딩을 다음으로 설정하십시오 UTF-8
mb_internal_encoding("UTF-8");
// 설정이 성공했는지 확인하십시오
echo "업데이트 된 인코딩: " . mb_internal_encoding() . "\n";
?>
MB_GET_INFO () 는 멀티 바이트 문자열 확장에 대한 구성 정보를 얻는 데 사용됩니다. 특정 정보를 반환하기 위해 매개 변수를 수락하거나 매개 변수를 전달하지 않고 모든 관련 설정의 배열을 반환 할 수 있습니다.
<?php
$info = mb_get_info();
print_r($info);
?>
출력은 다음과 같습니다.
Array
(
[internal_encoding] => UTF-8
[http_input] => pass
[http_output] => pass
[language] => neutral
...
)
다음과 같은 매개 변수를 전달할 수도 있습니다.
echo "현재 언어가 설정되었습니다: " . mb_get_info("language") . "\n";
다음은 더 완전한 예입니다. 응용 프로그램 시나리오를 시뮬레이션합니다. 다른 소스에서 데이터를 처리하는 동안 내부 인코딩을 일시적으로 변경 한 다음 원래 설정을 복원해야합니다.
<?php
// 현재 내부 코드를 저장하십시오
$originalEncoding = mb_internal_encoding();
// 시뮬레이션 gitbox.net 얻었다 ISO-8859-1 인코딩 된 컨텐츠
$data = "\xE9ducation"; // "éducation" in ISO-8859-1
// 인코딩을 설정하십시오 ISO-8859-1 올바르게 디코딩하려면
mb_internal_encoding("ISO-8859-1");
// 출력 문자 길이
echo "ISO-8859-1 모드의 길이: " . mb_strlen($data) . "\n";
// 인코딩을 복원하십시오
mb_internal_encoding($originalEncoding);
// 현재 설정을 다시 확인하십시오
echo "복원 된 코드는입니다: " . mb_get_info("internal_encoding") . "\n";
?>
이 예제는 내부 인코딩을 일시적으로 조정하여 멀티 바이트 기능이 다른 데이터 소스 시나리오에서 문자열을 올바르게 처리 할 수 있도록하는 방법을 보여줍니다.
mb_internal_encoding ()을 사용하여 유연하게 설정하고 현재 스크립트에서 사용하는 문자 인코딩을 가져옵니다.
MB_GET_INFO ()를 사용하면 디버깅 및 로깅에 매우 적합한 MBString 의 구성 상태를 이해할 수 있습니다.
실제 애플리케이션에서,이 두 기능은 종종 다른 코딩 된 데이터 수신, 출력 처리 전후에 상태 저장 및 복원 상태와 같은 시나리오와 같은 조합으로 사용됩니다.
** 팁 : ** 항상 시스템, 데이터베이스, 웹 출력 등이 일관된 인코딩 (예 : UTF-8)을 사용하여 인코딩 문제로 인한 문제를 크게 줄일 수 있습니다.