개요
Firefox 1.5와 다른 어플리케이션에서 사용되는 Gecko 1.8에서는 XUL 파일에서 로드되는 JavaScript 파일에 non-ASCII 캐릭터를 포함시킬 수 있습니다.
이는 세계에서 사용하는 모든 언어의 모든 문자를 스크립트 파일에서 사용할 수 있다는 의미입니다. 예를 들어 스크립트 파일에 이런 내용을 포함시킬 수 있습니다.
var text = "Ein schönes Beispiel eines mehrsprachigen Textes: 日本語";
일본어와 독일어 문자를 섞어 쓴 것입니다.
이전 버전에서는 XUL에서 로드되는 JS 파일은 로컬에서나 원격에서나 항상 ISO-8859-1 (Latin-1) 인코딩으로 해석되었습니다. 아래쪽에서 논의할 유니코드 이스케이프는 항상 동작했습니다.
Gecko 1.8 이후 버전에서 문자 인코딩이 결정되는 방법
JavaScript 파일이 chrome://
URL에서 로드될 때, 스크립트의 인코딩을 결정하는데 Byte Order Mark (BOM)이 사용됩니다. 이외의 경우에는 XUL 파일(<?xml?>
태그의 encoding
속성으로 지정 가능)과 같은 문자 인코딩을 사용합니다. XUL 파일의 기본 인코딩은 UTF-8이며, UTF-8은 사실상 세계의 모든 문자를 표현할 수 있습니다.
스크립트 파일이 HTTP를 통해서 로드된다면 HTTP 헤더에 Content-Type
헤더의 일부로 캐릭터 인코딩이 포함될 수 있습니다. 예를 들면 이런 형식입니다.
Content-Type: application/x-javascript; charset=UTF-8
문자 집합(charset)이 지정되지 않으면 앞의 경우와 동일하게 캐릭터셋이 결정됩니다.
버전 간 호환성
Gecko 1.8과 이전 버전에서 동일한 코드를 사용하려고 한다면 ASCII 문자만을 사용해야 합니다. 그러나 유니코드 이스케이프를 사용할 수는 있습니다. – 앞에서 나온 예제를 유니코드 이스케이프를 사용해서 표현하면 다음과 같습니다.
var text = "Ein sch\u00F6nes Beispiel eines mehrsprachigen Textes: \u65E5\u672C\u8A9E";
이 방법 대신 nsIStringBundle이나 XUL <stringbundle> 요소를 통해 속성 파일(property files)을 사용할 수도 있습니다. 그렇게 하면 XUL을 지역화할 수 있습니다. 그러나 권한을 얻을 수 있는 코드 즉, 확장 기능의 코드에서만 가능하고, 웹으로 로드되는 XUL 파일에서는 사용할 수 없는 방법입니다.