>백엔드 개발 >PHP 튜토리얼 >PHP URL 매개변수의 한자가 왜곡되는 이유와 해결 방법 [요약]

PHP URL 매개변수의 한자가 왜곡되는 이유와 해결 방법 [요약]

PHPz
PHPz원래의
2023-03-21 11:10:312439검색

PHP는 웹 애플리케이션과 동적 웹 페이지를 만드는 데 사용할 수 있는 널리 사용되는 개발 언어입니다. 그러나 PHP를 사용하면 다양한 문제에 직면하게 됩니다. 가장 어려운 문제 중 하나는 URL의 중국어 매개변수가 왜곡되는 문제입니다. 이번 글에서는 이 문제의 근본 원인과 해결 방법을 살펴보겠습니다.

URL의 중국어 매개변수가 왜곡되는 문제의 원인

HTTP 프로토콜에서 URL은 프로토콜, 호스트 이름, 파일 경로 및 쿼리 문자열 등을 포함한 여러 부분으로 구성됩니다. URL에 중국어 문자가 포함된 경우 서버와 브라우저가 이를 올바르게 해석할 수 있도록 이러한 문자를 인코딩해야 합니다. 이 인코딩 변환은 URL 인코딩이라는 방법을 사용합니다. URL 인코딩은 영숫자가 아닌 모든 문자를 퍼센트 기호(%) 뒤에 두 개의 16진수 숫자가 오는 형식으로 변환합니다.

예를 들어 한자 "安"은 UTF-8 인코딩으로 "E5 AE 89"로 표시됩니다. URL로 인코딩되면 "%E5%AE%89"가 됩니다. 브라우저는 이 인코딩을 서버에 전송하여 쿼리 문자열에 원래 중국어 문자 "安" 대신 "%E5%AE%89"를 전달하도록 서버에 지시합니다.

그러나 PHP 코드가 URL에 전달된 중국어 매개변수를 가져오려고 시도하면 올바르게 구문 분석되지 않아 문자가 깨질 수 있습니다. 이는 PHP가 기본적으로 ISO-8859-1 문자 세트를 사용하여 GET 요청의 매개변수를 구문 분석하기 때문입니다. UTF-8 인코딩 형식의 중국어 문자는 ISO-8859-1 문자 세트에 존재하지 않으므로 PHP는 이를 잘못된 문자로 구문 분석합니다.

URL의 중국어 매개변수 왜곡 문제 해결 방법

URL의 중국어 매개변수 왜곡 문제를 해결하려면 매개변수의 인코딩 방법을 알고 이를 인식할 수 있는 인코딩 형식으로 변환해야 합니다. PHP로. 다음은 두 가지 방법입니다.

방법 1: 수동 변환

인코딩을 직접 수동으로 변환하는 것은 이 문제를 해결하는 가장 쉬운 방법 중 하나입니다. 인코딩 변환을 위해 PHP에 내장된 함수를 사용할 수 있습니다. 예를 들어 위에서 언급한 한자 "安"의 경우 다음 코드를 사용하여 UTF-8 인코딩 형식에서 ISO-8859-1 인코딩 형식으로 변환할 수 있습니다.

$url_param = '%E5%AE%89';
$decoded_param = urldecode($url_param);
$encoded_param = mb_convert_encoding($decoded_param, 'ISO-8859-1', 'UTF-8');
echo $encoded_param; // 输出:安

이 코드에서는 먼저 urldecode( )를 사용합니다. 함수는 URL로 인코딩된 매개변수를 다시 일반 텍스트로 변환합니다. 그런 다음 mb_convert_encoding() 함수를 사용하여 텍스트를 UTF-8 인코딩에서 ISO-8859-1 인코딩으로 변환하고 결과를 $encoded_param 변수에 저장합니다.

방법 2: 서버 구성 수정

인코딩 변환을 수동으로 수행하고 싶지 않은 경우 URL 매개변수를 UTF-8 인코딩 형식에서 ISO-8859-1 인코딩 형식으로 자동 변환하도록 서버 구성을 수정할 수도 있습니다. . Apache 서버에서는 .htaccess 파일을 수정하여 웹 루트 디렉터리에서 이를 달성할 수 있습니다. .htaccess 파일에 다음 줄을 추가하세요:

AddDefaultCharset ISO-8859-1
php_value default_charset "iso-8859-1"

이렇게 하면 Apache가 요청을 구문 분석할 때 ISO-8859-1 인코딩 형식을 사용하고 이 인코딩 형식을 PHP에 전달하여 PHP가 중국어 매개 변수를 올바르게 구문 분석할 수 있도록 합니다. 요청을 받으세요.

결론

이 글에서는 URL의 중국어 매개변수가 왜곡되는 문제의 근본 원인을 살펴보고 두 가지 해결 방법을 소개했습니다. URL 매개변수의 인코딩 형식을 수동으로 변환하는 것은 때때로 지루하게 느껴질 수 있지만 가장 쉽고 안정적인 솔루션입니다. 반면, 서버 구성을 수정하면 URL 매개변수를 UTF-8 인코딩 형식에서 ISO-8859-1 인코딩 형식으로 자동으로 변환할 수 있지만 이를 위해서는 해당 서버 구성 및 권한이 필요합니다. 어떤 방법을 사용하든 URL 인코딩과 PHP 인코딩에 대한 지식을 완전히 이해하면 URL의 중국어 매개변수가 왜곡되는 문제를 해결하고 웹 애플리케이션이 정상적으로 실행되도록 할 수 있습니다.

위 내용은 PHP URL 매개변수의 한자가 왜곡되는 이유와 해결 방법 [요약]의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.