JavaScript에는 기본 문자 인코딩이 없습니다. JavaScript 프로그램은 사양과 관련하여 추상 문자 시퀀스입니다.네트워크를 통해 전송되거나 컴퓨터에 저장된 경우 추상 문자는 어떻게 든 인코딩되어야하지만 이에 대한 메커니즘은 ECMAScript 표준에 의해 제어되지 않습니다.
ECMAScript 표준의 섹션 6은 참조 인코딩으로 UTF-16을 사용하지만 기본값으로 지정하지 않습니다. 참고로 UTF-16을 사용하는 것은 논리적으로 불필요합니다 (유니 코드 번호를 언급하는 것으로 충분할 것입니다). 그러나 아마 사람들을 돕는 것으로 가정되었습니다.
이 문제는 일반적으로 문자열 리터럴이나 문자열 해석과 혼동되어서는 안됩니다. 'Φ'와 같은 리터럴은 프로그램의 나머지 부분과 함께 일부 인코딩에 있어야합니다. 이것은 임의의 인코딩이 될 수 있지만, 인코딩이 해결 된 후에는 리터럴이 문자의 유니 코드 번호에 따라 정수로 해석됩니다.
인터넷을 통해 ("외부 JavaScript 파일"처럼) JavaScript 프로그램이 전송되면 RFC 4329, 스크립팅 미디어 유형이 적용됩니다. 4 절에서는 메커니즘을 정의합니다. 주로 HTTP 헤더와 같은 헤더가 확인되고 charset
매개 변수가 신뢰됩니다. 실제로 웹 서버는 일반적으로 JavaScript 프로그램에 대해 이러한 매개 변수를 지정하지 않습니다. 둘째, BOM 감지가 적용됩니다. 실패하면 UTF-8이 암시됩니다.
메커니즘의 첫 번째 부분은 다소 모호합니다. 실제 HTTP 헤더에서만 charset
매개 변수와 관련된 것으로 해석되거나 charset
매개 변수 script
요소로 확장 될 수 있습니다.
script
요소 또는 이벤트 속성을 통해 JavaScript 프로그램이 HTML에 포함 된 것으로 나타나면 문자 인코딩은 물론 HTML 문서의 문자 인코딩과 동일합니다. HTTP 헤더의 charset
, charset
의 meta
, charset
의 문서에 액세스하기위한 링크, 그리고 마지막으로 휴리스틱 (추측)과 같은 여러 메커니즘이 정의되어 있습니다 (HTML 4.01 사양의 Specifying the character encoding 섹션 참조). 참조 복잡한 resolution mechanism in the HTML5 draft.
JavaScript 문자열은 항상 UTF-16입니다. – Pointy
그때 그 대답 일 것 같네요. 제발,이 문서화 된 곳은 어디입니까? –
ECMA-262 문서에서 정확히 알아 내려고 노력하고 있습니다 :-) – Pointy