PHP 프로그램을 개발할 때 PHP_UNAME () 함수는 운영 체제 이름, 버전, 기계 유형 등과 같은 운영 체제의 관련 정보를 반환 할 수있는 매우 실용적인 도구입니다. 그러나 경우에 따라 PHP_UNAME () 호출 할 때 반환 된 결과가 특히 다국적 또는 교차 플랫폼 환경에서 해당 될 수 있습니다. 이 기사를 사용하면 php_uname ()가 왜 차별적 인 코드를 반환하고 문자 인코딩 문제를 해결하는 방법에 대한 자세한 단계를 제공하는지 이해하는 데 도움이됩니다.
php_uname () 함수는 시스템 정보를 반환하기 위해 운영 체제의 환경 설정에 의존합니다. 다른 운영 체제 및 다른 문자 세트 인코딩의 경우, php_uname ()은 일관되지 않은 문자 인코딩 결과를 반환 할 수 있습니다. 특히 중국 환경에서 시스템 정보는 일반적으로 시스템의 기본 문자 인코딩을 사용합니다. PHP 환경 또는 웹 서버의 인코딩 설정이 운영 체제와 일치하지 않으면 코드가 나옵니다.
또한 PHP 스크립트가 웹 페이지와 다른 문자 인코딩을 사용하는 경우 (예 : PHP는 UTF-8을 사용하고 웹 페이지를 사용하고 웹 페이지를 사용하여 GBK 또는 ISO-8859-1을 사용하면 문자 인코딩 간의 부적절한 변환도 코드로 이어질 수 있습니다.
먼저 PHP 파일이 UTF-8 인코딩을 사용하고 있는지 확인하십시오. 코드 편집기를 사용하여 파일 인코딩을 확인하고 변경할 수 있습니다. 다음은 몇 가지 일반적인 편집기 설정입니다.
VSCODE : 오른쪽 하단의 인코딩 메소드를 클릭하고 "인코딩으로 저장" -> "UTF -8"을 선택하십시오.
Sublime Text : 메뉴를 통해 "파일"을 선택하십시오 -> "인코딩으로 저장" -> "UTF -8"
메모장 ++ : 메뉴 "인코딩" -> "UTF -8 인코딩 저장"을 선택하십시오.
mb_internal_encoding () 함수를 통해 PHP의 기본 문자 인코딩을 UTF-8로 설정할 수 있습니다. 이렇게하면 모든 문자열 작업이 일관된 문자 인코딩이 될 수 있습니다.
mb_internal_encoding("UTF-8");
올바른 문자 세트가 브라우저로 돌아 오는 HTTP 헤더에 지정되어 있는지 확인하십시오. 응답의 컨텐츠 유형 및 문자 인코딩은 헤더 () 함수를 통해 설정할 수 있습니다.
header('Content-Type: text/html; charset=UTF-8');
Barlled 코드가 여전히 나타나면 Php_uname () 에 의해 리턴 된 문자 인코딩이 PHP의 기본 인코딩과 일치하지 않기 때문일 수 있습니다. 현재 MB_Convert_Encoding () 함수를 사용하여 반환 된 결과를 올바른 문자 인코딩으로 변환 할 수 있습니다.
$uname = php_uname();
$uname = mb_convert_encoding($uname, 'UTF-8', 'auto'); // 'auto' 허락하다 PHP 소스 인코딩을 자동으로 감지합니다
echo $uname;
UTF-8을 사용하여 웹 페이지가 인코딩되어 있는지 확인하십시오. HTML 파일의 <head> 부분에 다음 메타 태그를 추가 할 수 있습니다.
<meta charset="UTF-8">
이를 통해 페이지에 UTF-8 인코딩 된 문자가 올바르게 표시되도록합니다.
데이터베이스 인코딩 : 데이터베이스에서 시스템 정보를 얻는 경우 데이터베이스 연결과 데이터베이스 테이블이 UTF-8을 사용하여 인코딩되어 있는지 확인하십시오. 데이터베이스에 연결할 때 다음 코드를 사용할 수 있습니다.
mysqli_set_charset($conn, 'utf8');
운영 체제 설정 점검 : 일부 운영 체제는 다른 문자 인코딩을 사용하여 시스템 정보를 나타내므로 운영 체제 자체의 인코딩 설정이 PHP 인코딩 설정과 일치하도록합니다.
다음은 php_uname () 함수를 올바르게 사용하고 문자 인코딩을 처리하는 방법을 보여주는 전체 예제 코드입니다.
<?php
// 내부 인코딩을 설정하십시오 UTF-8
mb_internal_encoding("UTF-8");
// 응답 헤더를 설정하십시오 UTF-8
header('Content-Type: text/html; charset=UTF-8');
// 시스템 정보를 얻으십시오
$uname = php_uname();
// 리턴 값을로 변환하십시오 UTF-8 코딩
$uname = mb_convert_encoding($uname, 'UTF-8', 'auto');
// 출력 결과
echo "시스템 정보: " . $uname;
?>
php_uname ()을 반환하는 이유는 일반적으로 다중 언어 환경에서 일반적으로 문자 인코딩 불일치와 관련이 있습니다. PHP 파일의 설정을 인코딩하는 문자, HTTP 응답, 데이터베이스 및 웹 페이지가 일관되게 보장함으로써 효과적으로 회복 된 문제를 피할 수 있습니다. 문제가 지속되면 mb_convert_encoding () 함수를 사용하여 문자 인코딩을 수동으로 변환 할 수 있습니다.
이 기사에 제공된 솔루션이 PHP의 문자 인코딩 문제를 해결하고 올바른 운영 체제 정보를 성공적으로 출력하는 데 도움이되기를 바랍니다.