2012-01-12 3 views

답변

13

수 없습니다. 그러나 파일을 charset attribute을 사용하여 페이지로 가져 오는 script tag에서 정의 할 수 있습니다. 파일을 제공하는 (있는 경우)이 Content-Type과 일치해야합니다. 인용 :

charset 속성은 외부 스크립트 리소스의 문자 인코딩을 제공합니다. src 특성이없는 경우 특성을 지정하지 않아야합니다. 속성이 설정된 경우 그 값은 올바른 문자 인코딩 이름이어야하며 해당 인코딩에 대해 preferred MIME name의 경우 ASCII case-insensitive match이어야하며 외부 파일의 Content-Type metadatacharset 매개 변수에 지정된 인코딩과 일치해야합니다 (있는 경우). 당신의 편집 다시 [IANACHARSET]

: 그가 (그녀가)에 시작할 때 나는 내 친구에게 JS 파일을 보내는 경우

, 나는 그가 (그녀가)이 이해할 수있는 희망은 코드 자체에서 파일의 문자 인코딩을 JS 브라우저 또는이 JS 파일을 편집하십시오.

당신은 그에게 말할 필요가 있습니다. 파일이 UTF-8 또는 Windows-1252 또는 ISO 8859-1 인 경우 불행히도 사용할 수있는 인코딩의 파일 표시기가 없으므로 처음에 다음 줄의 주석을 포함 시키십시오.

UTF-16 또는 UTF-32를 사용하는 경우 편집기에 BOM을 사용하도록 지시 할 수 있어야합니다.이 편집기는 다른 편집자가 (유니 코드 인식 편집기 인 경우)보고 이해해야합니다. 일반적으로 많은 멀티 바이트 문자가 필요한 텍스트 (언어)로 의견을 쓰고 코드에 서술문 비율이 높은 경우 (서구 텍스트로 작성된 코드이므로)에만 적용됩니다. 물론 좋아하는 인코딩을 사용해도됩니다. 코드에 대한 주석의 비율이 낮 으면 코드가 문자 당 1 바이트 만 필요하기 때문에 주석이 4 바이트 문자가 많은 텍스트에 포함되어 있어도 UTF-8을 사용하는 것이 좋습니다. . (UTF-16에서는 주석에 4 바이트 문자 대신 2 바이트가 더 많이 들어 있지만 코드 당 문자 당 2 바이트가 필요하고 UTF-32에서는 문자 당 4 바이트가 필요합니다. 따라서 전체적으로 주석의 공간이 적더라도 파일 크기는 더 클 수 있습니다. 그러나 여기에서는 질문에 대한 이유를 정확하게 추측하는 경우 이미 내가 아는 것보다 훨씬 잘 알 수 있습니다.)

+0

또한 UTF-8 용 BOM을 포함 할 수 있으며 브라우저는이를 존중합니다. – Andrea

+0

@Andrea : 일부 브라우저는 아니며 신뢰할 수 없습니다. 응답의'charset '설정은 선택 사항이 아니며 관련 RFC에서는 응답이 US-ASCII라는 것을 분명히 밝힙니다. 불과 2 주 전, IE는 아약스가 요청한 JSON을 UTF-8로 해석했지만 파이어 폭스는 BOM을 부당하게 JSON이라고 불렀다. –

+0

@ T.J.Crowder 관련 RFC는 무엇입니까? [WHATWG의 인코딩 스펙에 따르면 "BOM이라고도하는 바이트 순서 표시는 다른 것보다 더 권위가 있습니다."] (https://encoding.spec.whatwg.org/#specification-hooks).물론, 일을 제대로하면 charset =을 포함시켜야합니다. – Andrea

3

There CSS에서 할 수있는 방법으로 파일 자체에서 인코딩을 선언하는 JavaScript 구문은 없습니다. 인코딩은 데이터를 전달할 때 수신자에게 전달되어야합니다.전자 메일 첨부 파일로 파일을 보낼 때 전자 메일 프로그램에 인코딩을 나타내는 Content-Type 헤더가 포함되거나 포함되지 않을 수 있습니다 (인코딩이 무엇인지 파악하는 데 어려움이있을 수 있음).

UTF-8 인코딩 파일의 시작 부분에서 BOM (Byte Order Mark)을 사용할 수도 있습니다. UTF-8에는 바이트 순서 문제가 없지만 BOM은 유용한 표시기 역할을합니다. UTF-8 인코딩으로 BOM을 구성하는 바이트로 시작하는 파일은 대부분 UTF-8로 인코딩됩니다. 이것이 다른 표시가없는 경우 프로그램에서 인코딩을 유추 할 수있는 이유입니다. 이것은 물론 100 % 신뢰성있는 것은 아니지만 유용한 것입니다.

많은 텍스트 편집기에는 파일을 "BOM으로 인코딩 된 UTF-8"로 저장할 수있는 옵션이 있습니다.

가 (브라우저가 문자 데이터로 취급 관찰 된 이후 웹 페이지에서 BOM이 한 번, 위험으로 간주되었다.이 일의 BOM은 심지어에서 UTF-8은 위험보다는 유용합니다.)

3

파일의 인코딩을 사람이 읽을 수있는 방식으로 표시하려는 경우 T.J. Crowder's 아이디어 (파일에 // Encoding: UTF-8과 같은 설명을 추가하는 것)가 중요합니다. 그리고 Jukka K. Korpela이 지적했듯이 BOM을 사용할 수도 있습니다.

하지만 당신은 다른 몇 가지 방법이 있습니다 문서에 선언 된 문자 집합 표시하는 기계 판독 방법을 원하는 경우 : 다음과 같은 선언을 사용할 가능성이있는 아파치 서버에서 예를 들어

을, :

  1. AddDefaultCharset UTF-8
  2. AddCharset UTF-8 .js
  3. AddType 'application/javascript; charset=UTF-8' js *

* 을 사용하는 경우에 관심이 없습니다. "text/javascript"입니다. 그러나 왜 다른 사람이 선호하는 이유를 알고 싶다면 cf. https://stackoverflow.com/a/4101763/1070047. 그러나 주제를 감안할 때 application/javascript은 매우 적합합니다 (특히 BOM을 사용하려는 경우 코드가 바이너리로 처리되어야 함을 나타 내기 때문에).

코드가 해석됩니다 경우/처리/컴파일 서버 측 (예 : PHP), 당신은

header("Content-Type: application/javascript; charset=utf-8");

는 적어도 PHP 내에서 해당 헤더를 추가해야합니다 ... 예를 들어, 문서에 헤더를 설정할 수 있습니다 명령문은 출력이 일어나기 전에 발생합니다.

마지막으로 사용할 선언을 결정할 때 BOM이 문서 헤더보다 더 큰 권한을 가짐을 이해하고 (즉, IE에서는 이해할 수없는 경우) 고려하십시오. 그리고 둘 다 연결된/출처가있는 charset 선언 (예 : <script type="application/javascript" src="script.js" charset="utf-8"></script>)보다 우선합니다.

관련 문제