인 코딩 된 중국어 URL 에 접근 하여 404 오류 해결 방법 을 되 돌려 줍 니 다.

어제 프로젝트 를 만 들 었 는데 그 중 하 나 는 모든 그림 이 그림 에 대한 설명 에 대응 하 는 것 이다.일반적인 방법 은 시 계 를 새로 만 든 다음 에 그림 이름과 설명 문 자 를 데이터베이스 에 기록 하 는 것 이다.곰 곰 이 생각해 보 니 이 앱 은 데이터 베 이 스 를 사용 하지 않 아 도 완 성 될 것 같 습 니 다.제 가 실현 하 는 방안 은 설명 문자 URLENCODE 를 파일 이름 으로 하 는 것 입 니 다.그러면 제 가 파일 을 읽 을 때 파일 이름 URLDECODE 를 사용 하면 그림 을 후진 시 킬 수 있 는 문자 설명 입 니 다.
그러나 브 라 우 저 를 통 해 그림 을 방문 할 때 파일 을 찾 을 수 없다 는 것 을 알 립 니 다.그림 의 설명 문자 가'경대 블 로그'라면 URLENCODE 이후 생 성 된 파일 이름 은 다음 과 같 습 니 다.

%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg
그래서 나 는 브 라 우 저 를 통 해 그림 에 접근 하여 힌트 를 찾 을 수 없 었 다.

자세히 보 니 브 라 우 저가 방 문 했 을 때 자동 으로 파일 이름 을 중국어 로 되 돌 렸 다
불 여우

chrome

IE

Safari

IE 와 Safari 는 주소 표시 줄 에서 한자 로 바 뀌 는 것 을 보지 못 했 지만 파일 을 찾 을 수 없다 는 것 도 마찬가지 로 안내 했다.하지만 요청 할 때 도 자동 으로 돌아 간 것 같 습 니 다.주소 표시 줄 에 변환 이 표시 되 지 않 았 을 뿐 입 니 다.Nginx 의 방문 기록 에서 그림 에 접근 할 때의 요청 상황 을 봅 니 다.

 192.168.6.30 - - [12/Oct/2012:10:09:44 +0800] "GET /%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg HTTP/1.1" 404 199 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
URL 처 리 를 요청 한 결과 별 다른 이상 이 발견 되 지 않 았 습 니 다.마지막 으로 인 코딩 된 파일 이름 을 반복 적 으로 연구 한 결과 모두 백분율 과 알파벳 숫자 로 구성 되 어 있 습 니 다.브 라 우 저가 백분율 을 만 났 을 때 다른 변환 처 리 를 할 수 있 을 것 같 아서 브 라 우 저가 URLENCODE 에 방문 한 후의 파일 알림 을 찾 을 수 없습니다.
그래서 나 는 모든 URLENCODE 뒤의 파일 이름 의 백분 번 호 를 밑줄 로 바 꾸 었 다.

%E7%90%BC%E5%8F%B0%E5%8D%9A%E5%AE%A2.jpg
다음으로 바꾸다

_E7_90_BC_E5_8F_B0_E5_8D_9A_E5_AE_A2.jpg
브 라 우 저 접근 다시 사용,문제 해결

그림 의 문자 설명 을 가 져 오 려 면 파일 이름 의""을 직접 가 져 옵 니 다.'%'로 바 꾸 고 URLDECODE 를 사용 하면 됩 니 다.
마지막 으로 주의해 야 할 것 은 Linux 에서 파일 이름 은 Win 시스템 과 마찬가지 로 길이 제한 이 있 습 니 다.현재 가장 많이 사용 되 는 형식 은 ext 3 입 니 다.이 형식 은 255 글자 의 길 이 를 허용 합 니 다.약 5 개 를 확장 명 으로 제외 하고 약 250 개의 길이 의 순 파일 이름 이 남 습 니 다.한 자 는 URLENCODE 를 거 친 후의 길이 가 9 개 이기 때문에 최대 27 개의 한 자 를 인 코딩 하여 파일 이름 으로 할 수 있 습 니 다.
비록 이런 방식 으로 저 장 된 한 자 는 비교적 적 지만 암호 화 방법 을 이용 하여 비교적 짧 은 밀 문 을 얻 을 수 있 습 니 다.그리고 이 밀 문 URLENCODE 를 사용 하면 됩 니 다.구체 적 인 실현 방식 은 제 가 일일이 예 를 들 지 않 고 생각 을 해 보 겠 습 니 다!

좋은 웹페이지 즐겨찾기