2013-08-26 4 views
4

window.location을 사용하여 특수 문자가있는 URL을 열면 특수 문자가 백분율로 인코딩 된 다음 URL이 열립니다. window.location의 인코딩 비율

var url = "http://gramfeed.com/instagram/tags/kühl"; 
window.location = url; 

예를

를 들어이 URL이있는 페이지를 열어가 발생합니다 :

http://gramfeed.com/instagram/tags/k%C3%BChl 

대신 : 나는 퍼센트 인코딩 된 문자

을하지 않고 올바르게 열고 URL을 어떻게

http://gramfeed.com/instagram/tags/kühl 

여기 코드로 재생할 jsfiddle입니다 : http://jsfiddle.net/krisrak/aSkMR/

+0

%의 인코딩이 decodeURIComponent를 사용하고 – krisrak

답변

3

windows.location과 자바 스크립트에 문제가 있다고 생각하지 않습니다. gramfeed.com이 태그를 해석하는 방법에 문제가 있습니다. 코드에서 시도해보십시오.

var url = "https://www.google.com/search?q=kühl" 
window.location = url; 

특수 문자는 변환되지 않습니다.

브라우저 주소창에 http://gramfeed.com/instagram/tags/kühl을 직접 입력 해보십시오. URL이 변환됩니다.

+0

하면 window.location.hash 내 나쁜에 대체하여 자바 스크립트에 고정, 파이썬 서버 코드에 기인했다하는 데 도움이

희망, 난 당신이 옳다고 생각합니다. 나는 파이썬 코드로 URL을 변환하고 리다이렉트하고 있는데 왜 특수 문자 인코딩 비율인지 모르겠다. url = self.request.path.replace ('/'+ TAG_NAME, '#'+ TAG_NAME) self.redirect (url) – krisrak

+1

decodeURIComponent로 javascript에서 수정 : var tag_name = decodeURIComponent (window.location.hash.substring (1)); window.location.hash = tag_name; – krisrak

+1

@krisrak super, good job! –

0

나는 또한이 문제를 보았지만 완전히 다른 문제 였지만 증상은 같았습니다. 결국 데스크톱 웹 사이트 URL로 리디렉션되었지만 모바일의 경우 서버에서 모바일 사이트로 리디렉션 된 다음 두 번 인코딩 된 것입니다.

가능하면 모바일 사이트로 직접 리디렉션하려고 할 가치가 있습니다. 이것은 다른 사람 :