이 기사는 주로 PHP에서 urlencode와 rawurlencode의 차이점에 대해 설명합니다. 관심 있는 친구는 이에 대해 배울 수 있습니다.
이벤트 배경:
다니엘에게서 들었는데, 이전에 h5 미니게임을 만들 때 백엔드에서 사용자 관련 정보를 프런트엔드로 출력해야 했다고 들었습니다. 출력 내용에는 사용자 ID, 사용자 닉네임, 다른 필드와 매개변수는 get 메소드를 사용하여 전달되었습니다. 백엔드는 PHP 언어를 사용하여 일반적으로 사용되는 urlencode 함수를 사용하여 중국어 별명의 형식을 지정하고 인코딩합니다.
문제 발생:
urlencode 함수를 사용하여 형식을 지정합니다. urlencode 함수는 공백을 다음과 같이 인코딩합니다. +
물론 프런트 엔드에서는 수신 시 +를 공백으로 디코딩하고 바꿀 수 있습니다. 그러나 이는 매우 번거로운 추가 단계입니다. 때로는 당사의 데이터 인터페이스가 제3자 또는 타사를 위해 개발되어 처리 시 이러한 아이디어를 반드시 따르지 않을 수도 있습니다.
예를 들어 프런트 엔드에서 Python을 사용하여 수신하고 직접 디코딩하여 표시하는 경우 닉네임에는 + 기호가 표시됩니다.
해결책:
사용 rawurlencode
PHP에서 urlencode는 공백을 + 기호로 인코딩하고, rawurlencode는 공백을 %20
으로 인코딩합니다. PHP Manual 두 가지 기능 쌍 설명:
urlencode: 문자열을 반환합니다. -_를 제외하고 이 문자열에서 영숫자가 아닌 모든 문자는 퍼센트 기호(%)와 두 개의 16진수 숫자로 대체됩니다. 시스템 숫자, 공백은 더하기 기호(+)로 인코딩됩니다. ). 이 인코딩은 WWW 형식 POST 데이터의 인코딩과 동일하며 application/x-www-form-urlencoded의 미디어 유형 인코딩과 동일합니다. 역사적인 이유로 이 인코딩은 공백을 더하기 기호(+)로 인코딩한다는 점에서 RFC1738 인코딩(rawurlencode() 참조)과 다릅니다.
rawurlencode: 문자열을 반환합니다. -_를 제외한 모든 영숫자가 아닌 문자는 퍼센트 기호(%) 뒤에 2개의 16진수 숫자로 대체됩니다. RFC 1738에 설명된 이 인코딩은 리터럴 문자가 특수 URL 구분 기호로 해석되지 않도록 보호하고 전송 매체(예: 일부 메일 시스템)에서 사용되는 문자 변환으로 인해 URL 형식이 왜곡되는 것을 방지하기 위한 것입니다.
그러므로 PHP를 사용하여 중국어 인코딩을 전송할 때는 rawurlencode
를 사용하세요. 관련 강좌: PHP 비디오 튜토리얼
위 내용은 [PHP] urlencode와 rawurlencode의 차이점을 간략하게 설명하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!