>백엔드 개발 >PHP 튜토리얼 >인코딩된 중국어 URL_php 팁에 액세스할 때 404 오류를 반환하는 솔루션

인코딩된 중국어 URL_php 팁에 액세스할 때 404 오류를 반환하는 솔루션

WBOY
WBOY원래의
2016-05-16 20:37:53981검색

어제 프로젝트를 진행하면서 요구 사항 중 하나는 각 그림이 그림을 설명하는 짧은 텍스트 단락과 일치해야 한다는 것이었습니다. 일반적인 방법은 새 테이블을 만들고 그림 이름과 설명을 데이터베이스에 기록하는 것입니다. 신중하게 고려한 결과, 제가 구현한 솔루션은 설명 텍스트 URLENCODE를 파일 이름으로 사용하여 파일을 읽을 때 파일 이름 URLDECODE를 사용하여 구동할 수 있다는 것을 느꼈습니다. 그림의 텍스트 설명입니다.

그런데 브라우저를 통해 이미지에 접근하면 파일을 찾을 수 없다는 메시지가 나옵니다. 예를 들어 'Qiongtai Blog'라는 캡션이 붙은 사진이 있는 경우 URLENCODE 다음에 생성되는 파일명은 다음과 같습니다

코드 복사 코드는 다음과 같습니다.

충타이 블로그.jpg

그래서 브라우저로 이미지에 접속했더니 찾을 수 없다고 나오네요

자세히 살펴보니 브라우저에서 접속 시 자동으로 파일명을 중국어로 다시 변환해주는 것을 발견했습니다

파이어폭스

크롬

IE

사파리

IE와 사파리에서는 주소 표시줄이 한자로 변환된 것을 보지 못했지만, 파일을 찾을 수 없다고 보고하기도 했습니다. 그런데 요청하면 자동으로 변환이 되어야 할 것 같은데 주소창에 변환된 버전이 표시되지 않습니다. Nginx의 접속 기록에서 이미지에 접속 시 요청 상태를 확인하세요

코드 복사 코드는 다음과 같습니다.

192.168.6.30 - - [12/Oct/2012:10:09:44 0800] "GET /Qiongtai Blog.jpg HTTP/1.1" 404 199 "-" "Mozilla/5.0(호환; MSIE 9.0; Windows NT 6.1; Trident /5.0)"

요청 URL 처리에서는 예외가 발견되지 않았습니다. 마지막으로 인코딩된 파일 이름을 반복적으로 연구한 결과 모두 퍼센트 기호와 영숫자 문자로 구성되어 있다는 것을 발견했습니다. 다른 변환이 처리되었으므로 URLENCODE에 액세스한 후 파일을 찾을 수 없다는 메시지가 브라우저에 표시됩니다.

그래서 URLENCODE 뒤의 파일 이름에 있는 모든 퍼센트 기호를 밑줄로 바꿨습니다.

코드 복사 코드는 다음과 같습니다.

충타이 블로그.jpg

로 교체

코드 복사 코드는 다음과 같습니다.

_E7_90_BC_E5_8F_B0_E5_8D_9A_E5_AE_A2.jpg

브라우저를 재사용하여 접속하면 문제가 해결됩니다

이미지의 텍스트 설명을 얻으려면 파일 이름의 "_"를 "%"로 바꾼 다음 URLDECODE를 사용하세요.

마지막으로 Linux의 파일 이름에는 Win 시스템과 마찬가지로 길이 제한이 있습니다. 현재 가장 일반적으로 사용되는 형식은 ext3이며 이 형식에서는 약 5자를 빼고 255자를 허용합니다. 확장자로는 순수 파일명이 250개 정도 남았고, URLENCODE 뒤의 한자 길이는 9이므로 최대 27자의 한자를 파일명으로 인코딩할 수 있다.

이 방법은 더 적은 수의 한자를 저장하지만 일부 암호화 방법을 사용하여 더 짧은 암호문을 얻은 다음 이 암호문을 URLENCODE할 수 있습니다. 생각해 보세요.

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