Firefox의 URI encoding 방식

On Encoding URI with Non-ASCII chracters 글에 오류가 있었습니다. Firefox는 현재 (2.0) URI를 UTF-8로 Percent-encoding하지 않습니다. (이 사실은 윤묵형이 지적해주셨습니다.)

Firefox의 about:config 페이지를 보면 URI encoding에 관한 두개의 옵션이 있습니다.

  • network.standard-url.encode-utf8: HTTP 요청으로 전달되는 URI를 UTF-8로 Percent-encoding할 것인가, 클라이언트 환경이 정의하는 인코딩으로 Percent-encoding할 것인가를 나타냅니다. 디폴트 값은 false입니다.
  • network.standard-url.escape-utf8: 주소표시창에 나타나는 URI를 UTF-8로 Percent-encoding할 것인가, 인코딩하지 않을 것인가를 나타냅니다. 디폴트 값은 true입니다.
  • network.standard-url.encode-query-utf8: 제가 테스트해본 결과로는 영향을 미치지 않습니다.

encode-utf8 옵션의 디폴트 값이 false이기 때문에, Firefox는 클라이언트 환경이 정의하는 인코딩으로 Percent-encoding을 수행합니다. 따라서, 한글 윈도우에서는 EUC-KR로 Percent-encoding됩니다. UTF-8 환경의 리눅스에서는 위의 옵션 값이 false라고 하더라도 UTF-8로 Percent-encoding됩니다. 따라서 IE와 firefox는 다릅니다. 아마 기존과의 호환성을 위해서 아직 false인 것 같은데, IE에서는 기본값을 사용하는 상태이므로 Firefox도 true로 가는 것이 타당하다고 생각됩니다.

한편, escape-utf8 옵션의 디폴트 값이 true이므로, Firefox의 주소표시줄에 한글을 적으면 Percent-encoding된 형태로 표시됩니다. 이 옵션의 값을 false로 만들면, 한글 그대로 표시됩니다.

IE나 표준과 호환되면서, 사용자 입장에서는 디코딩된 형태의 URI를 보고 싶다면, Firefox about:config 페이지의 network.standard-url.encode-utf8 옵션은 true로, network.standard-url.escape-utf8 옵션의 값은 false로 만들어주시면 되겠습니다. 테스트는 http://ko.wikipedia.org/wiki/대한민국 로 해보시면 됩니다. 주소표시줄에 “대한민국”이라고 나오면 성공입니다.

아직 안읽어봤지만 이 문제에 대한 다음과 같은 논의들이 있는 것 같군요.

다음번에는 웹서버별로 URI encoding에 대해서 어떻게 처리하고 있는지 알아보도록 하죠.

댓글 달기

이메일 주소는 공개되지 않습니다.

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.