2013-03-27 4 views
0

필자의 URL을 사람이 읽을 수 있고 가능한 한 많이 사용하고 싶습니다. 공백 문자가 URL에서도 작동한다는 것을 알았습니다. 복사 : http://en.wikipedia.org/wiki/Prince of Persia 또는 http://en.wikipedia.org/wiki/سنڌي을 보우 너 주소 표시 줄에 붙여 넣으면 작동합니다! 너무URL의 공백 및 라틴 문자가 아닌 문자

이 작업 : 얼마나 안전의 URL에 A-Z를 넘어 유니 코드 문자를 사용

<a href='http://en.wikipedia.org/wiki/Prince of Persia'> Foo </a> 
<a href='http://en.wikipedia.org/wiki/سنڌي'> Bar </a> 

? 내 URL은 Wikipedia 링크와 마찬가지로 문장 부호없이 간단합니다.

그것이 유효하거나 무효하다는 것은 중요하지 않습니다. 나는 단지 작동되기를 바랍니다!

위합니까 일반적인 모든 브라우저에서 문제없이 작동합니다 (실제로 내가 대신 ''의 +를 사용하기 위하여려고하고 나의 주요 관심사는 유니 코드 텍스트에 관한 것입니다)?

+0

유효하지 않기 때문에 일관되게 작동하지 않습니다. 브라우저에서 AFAIK를 인코딩 할 필요가 없습니다. 그것은 잘못된 HTML과 같습니다 ... 작동하지만 브라우저마다 다르게 작동하며 사용자는 항상 엄격한 즉석 오류가 발생하기를 바랍니다. – Esailija

+0

무슨 의미입니까? – PHPst

+0

잘 보면 http://stackoverflow.com/q/15547897/995876 – Esailija

답변

0

이것은 UI 특수 효과이므로 브라우저에 완전히 의존합니다. 사용 된 실제 URL은 인코딩 된 URL입니다. 복사하여 붙여 넣으려고하면 클립 보드에 URL 인코딩이있는 것을 볼 수 있습니다.

+0

그래서 사용하는 것이 안전합니까? – PHPst

+0

@PHPst 사용상의 의미는 무엇입니까? 해당 문자를 사용할 때 문자 그대로 지원 브라우저에서 문자를 쓰는 것이 안전하지만 코드에서 url-encode해야합니다. – Esailija

0

페르시아의 "http://en.wikipedia.org/wiki/Prince"이라고 부르면 브라우저가 장면 뒤에서 마술을합니다. 공간 문자는 % 20 이스케이프 형식으로 변환되어 웹 서버로 전송됩니다. http://en.wikipedia.org/wiki/Prince%20of%20Persia

그러나 위키 백과에서는 아직 실제 페이지를 반환하지 않습니다. 브라우저가 밑줄 형식의 리디렉션 응답을받습니다. 그런 다음 브라우저가 실제 콘텐츠를 다운로드합니다. 그것의 wikipedia 서버 비즈니스 로직은 보이는 URL을 위생 처리합니다. HTTP/1.0 301 영구적으로 위치 이동 : http://en.wikipedia.org/wiki/Prince_of_Persia

그냥 유니 코드 문자가 괜찮 열심히 :-)

작업 브라우저와 인터넷을 넣어, 그들은 % XX 전에 웹 브라우저로 전송 이스케이프됩니다. 다음은 대상 웹 서버에 표시되는 실제 URL 형식입니다. http://en.wikipedia.org/wiki/%D8%B3%D9%86%DA%8C%D9%8A

웹 서버는 UTF8 유니 코드 이스케이프를 처리하는 방법을 알고 있으며, 대부분의 현대 서버는 무엇을해야하는지 알고 있습니다. 스마트 브라우저는 % XX 이스케이프를 주소 표시 줄 필드의 보이는 문자로 변환 할 수 있습니다. 프로그래밍 방식으로 http 호출을 수행 할 때 어떻게 이스케이프 작동 방식을 알아야합니다.