> PHP 프레임워크 > ThinkPHP > ThinkPHP에서 URL 중국어 트랜스코딩을 구현하는 방법

ThinkPHP에서 URL 중국어 트랜스코딩을 구현하는 방법

PHPz
풀어 주다: 2023-05-26 20:11:10
앞으로
1654명이 탐색했습니다.

URL에 중국어 문자를 사용하는 것은 매우 일반적인 요구 사항입니다. 예를 들어 포럼에서는 게시물 제목이 중국어로 되어 있는 경우가 많으며 페이지 주소를 생성하려면 URL의 일부로 사용해야 합니다. 그러나 역사적 이유와 프로토콜 제한으로 인해 URL은 ASCII 코드 테이블에 존재하는 문자만 사용할 수 있습니다. 한자를 사용하여 URL 주소를 생성하려면 이러한 문자를 안전한 URL 문자로 변환하는 방법이 필요합니다.

일반적인 트랜스코딩 방법은 urlencode 기능을 사용하는 것입니다. 이 기능의 목적은 URL에서 충돌이 발생하지 않도록 중국어 문자를 특수 16진수 인코딩으로 변환하는 것입니다. ThinkPHP에서는 URL 인코딩을 위해 url 함수를 사용할 수 있습니다. 예:

$url = url('/index/index', ['title' => urlencode('中文内容')]);
로그인 후 복사

이 예에서는 중국어 콘텐츠를 urlencode 인코딩으로 변환하고 이를 제목 매개변수로 컨트롤러 메서드에 전달했습니다. 컨트롤러 메서드에서는 urldecode 함수를 사용하여 트랜스코딩된 한자를 복원할 수 있습니다. 예:

public function index($title)
{
    $title = urldecode($title);
    // ...
}
로그인 후 복사

이 방법은 가능하지만 상당한 단점이 있습니다. 즉, 16진수로 인코딩된 문자열은 일반적으로 원래 중국어 문자열보다 훨씬 길어서 URL이 매우 보기 흉해지고 기억하기 어려워집니다. .

한자의 URL 인코딩은 URL 안전 Base64 인코딩을 사용하여 달성할 수 있으므로 이 문제를 해결할 수 있습니다. ThinkPHP에서는 base64url_encode 및 base64url_decode 함수를 사용할 수 있습니다. 예:

$url = url('/index/index', ['title' => base64url_encode('中文内容')]);
로그인 후 복사

이 예에서는 URL 안전 Base64를 사용하여 중국어 콘텐츠를 인코딩하고 이를 제목 매개변수로 컨트롤러 메서드에 전달합니다. 컨트롤러 메소드에서 base64url_decode 함수를 사용하여 원래 한자로 디코딩할 수 있습니다. 예:

public function index($title)
{
    $title = base64url_decode($title);
    // ...
}
로그인 후 복사

Base64 인코딩을 사용하는 방법은 urlencode 방법에 비해 분명한 이점이 있습니다. 즉, 생성되는 인코딩된 문자열이 상대적으로 짧고, 더 아름답고, 읽기 쉽습니다. 그러나 이 방법으로 URL 안전 문자열을 생성할 때 원래 Base64 문자를 대체하려면 일부 특수 문자를 사용해야 합니다(예: + 기호를 -로 대체, / 기호를 _로 대체, 가능한 제거). 종료 문자 = 기호.

실제 개발에서는 각자의 필요에 따라 적절한 트랜스코딩 방법을 선택할 수 있습니다. urlencode이든 Base64 인코딩이든 생성된 URL이 사양을 준수하는지 주의를 기울여야 하며 컨트롤러 메서드에서 올바른 디코딩 처리를 수행하여 애플리케이션이 중국어 문자가 포함된 URL을 올바르게 처리할 수 있도록 해야 합니다.

위 내용은 ThinkPHP에서 URL 중국어 트랜스코딩을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿