[html] URL의 유니 코드 문자


2 Answers

Tgr이 말한 것. 배경:

http://www.example.com/düsseldorf?neighbourhood=Lörick

그것은 URI가 아닙니다. 그러나 그것은 IRIs 입니다.

HTML4 문서에는 IRI를 포함 할 수 없습니다. href 와 같은 속성 유형은 IRI가 아니라 URI로 정의됩니다. 어쨌든 여기서는 IRI를 다루는 브라우저가 있지만 좋은 생각은 아닙니다.

IRI를 URI로 인코딩하려면 경로 및 쿼리 부분을 가져 와서 UTF-8 인코딩 한 다음 비 ASCII 바이트를 퍼센트 인코딩합니다.

http://www.example.com/d%C3%BCsseldorf?neighbourhood=L%C3%B6rick

IRI의 호스트 이름 부분에 비 ASCII 문자가있는 경우, 예를 들어. http://例え.テスト/ , 대신 Punycode 를 사용하여 인코딩 된 것입니다.

이제 URI가 생겼습니다. 추악한 URI입니다. 그러나 대부분의 브라우저는 그것을 숨길 것입니다 : 주소 표시 줄에 복사하여 붙여 넣거나 링크를 따라 가면 원래의 유니 코드 문자로 표시됩니다. Wikipedia는 수년 동안 이것을 사용 해왔다.

http://en.wikipedia.org/wiki/ɸ

행동이 예측할 수없고 항상 IRI 버전을 표시하지 않는 한 브라우저는 ...

...너도 알듯이.

Question

2010 년에는 대형 웹 포털에서 UTF-8 문자가 포함 된 URL을 제공하겠습니까?

유니 코드 문자는 URL의 RFC에 따라 금지됩니다 ( here 참조). 표준 준수를 위해 백분율로 인코딩되어야합니다.

하지만 필자의 주된 요점은 멋지게 보이는 URL을 갖는 유일한 목적으로 인코딩되지 않은 문자를 제공하기 때문에 인코딩 비율이 떨어집니다.

모든 주요 브라우저는 RFC가 말하는 것과 상관없이 해당 URL을 구문 분석하는 것으로 보인다. 내 일반적인 인상은 웹 브라우저의 영역을 떠날 때 매우 불안정 해지는 것입니다.

  • 텍스트 파일, 전자 메일, 심지어 인코딩이 다른 웹 사이트에도 복사 + 붙여 넣기되는 URL
  • HTTP 클라이언트 라이브러리
  • 이국적인 브라우저, RSS 리더

내 인상이 문제가 여기에서 예상된다는 인상이 맞습니까? 따라서 비 기술적 인 잠재 고객에게 서비스를 제공하는 경우 실용적인 솔루션이 아니며 모든 링크가 따옴표로 묶이고 전달 된 경우에도 제대로 작동해야합니다.

HTML로 멋진 URL을 제공하는 마법 같은 방법이 있습니까?

http://www.example.com/düsseldorf?neighbourhood=Lörick

특수 문자를 그대로 복사 + 붙여 넣을 수 있지만 이전 클라이언트에서 다시 사용할 때 제대로 작동합니까?




좋은 생각인지는 모르지만 다른 의견에서 언급했듯이 해석 할 때 많은 유니 코드 문자 가 HTML5 URL에서 유효합니다 .

예 : href 문서 http://www.w3.org/TR/html5/links.html#attr-hyperlink-href :

a 및 area 요소의 href 속성은 공백으로 둘러싸인 유효한 URL 값이어야합니다.

그런 다음 "유효한 URL"의 정의는 URL 코드 포인트 를 다음과 같이 정의하는 http://url.spec.whatwg.org/ 가리 킵니다 .

ASCII 문자 숫자 식, "!", "$", "&", "", "(", ")", "*", "+" 범위 U + 00A0 ~ U + D7FF, U + E000 ~ U + FDCF 범위의 ":", ";", "=", "?", "@", "_" , U + FDF0 ~ U + FFFD, U + 10000 ~ U + 1FFFD, U + 20000 ~ U + 2FFFD, U + 30000 ~ U + 3FFFD, U + 40000 ~ U + 4FFFD, U + 50000 ~ U + 5FFFD, U +60000 ~ U + 6FFFD, U + 70000 ~ U + 7FFFD, U + 80000 ~ U + 8FFFD, U + 90000 ~ U + 9FFFD, U + A0000 ~ U + AFFFD, U + B0000 ~ U + BFFFD, U + C0000 U + CFFFD, U + D0000 ~ U + DFFFD, U + E1000 ~ U + EFFFD, U + F0000 ~ U + FFFFD, U + 100000 ~ U + 10FFFD.

"URL 코드 포인트"라는 용어는 파싱 알고리즘의 몇 부분에서 사용됩니다 (예 : 상대 경로 상태) .

c가 URL 코드 포인트가 아니고 "%"가 아닌 경우 구문 분석 오류입니다.

또한 유효성 검사기 http://validator.w3.org/"你好" 와 같은 URL을 전달하고 공백 "ab" 와 같은 문자가 포함 된 URL은 전달하지 않습니다.




백분율로 인코딩 된 양식을 사용하십시오 . 예를 들어 Windows XP를 실행하는 일부 (주로 오래된) 컴퓨터는 유니 코드가 아니라 ISO 인코딩을 지원합니다. 이것이 백분율로 인코딩 된 URL이 발명 된 이유입니다. 또한 쉽게 입력 할 수없는 문자가 포함 된 사용자에게 종이에 인쇄 된 URL을 제공하면 해당 사용자는 입력하기가 어려울 수도 있고 무시할 수도 있습니다. 백분율로 인코딩 된 양식은 심지어 가장 오래된 컴퓨터 중 많은 컴퓨터에서 사용할 수 있습니다 (인터넷을 지원하지는 않지만).

단점은 있지만 인코딩 된 문자는 원본보다 길기 때문에 실제로 긴 URL이 생성 될 수 있습니다. 하지만 그냥 무시하거나 URL 단축키 를 사용하십시오 (이 경우 goo.gl 을 추천합니다.이 경우 길이가 13자인 URL을 사용합니다). 또한 Google 계정에 등록하지 않으려면 bit.ly를 사용하십시오 (bit.ly는 길이가 약간 길며 길이는 14 자입니다).




Related