JavaScript에 유니 코드 문자 삽입


134

HTML 페이지에 Omega (Ω)를 삽입해야합니다. HTML 이스케이프 코드를 사용하여 작성 Ω하고 Ω을 얻을 수 있습니다 . HTML 요소에 넣었을 때 그것은 모두 훌륭합니다. 그러나 내 JS에 넣으려고하면 예를 들어 var Omega = Ω해당 코드를 JS로 구문 분석하고 모든 것이 작동하지 않습니다. 이 문제를 해결하는 방법을 아는 사람이 있습니까?


15
var Omega = "Ω";너무 간단합니까?
Heretic Monkey

6
메모장가 동의하지 않는, 그냥 오 기록 : P
Bluefire

13
@MikeMcCaughan 예.하지만 다른 개발자가 소스 파일의 인코딩을 엉망으로 잃어버린 경우, 잃어버린 것 같습니다. 커밋 할 때 작은 변화 "또는"문자 enco-what? " ; =)
Samuel Rossille 2009 년

3
@Bluefire는 문자 인코딩 (예 : notepad ++) 설정을 지원하고 UTF-8로 설정하는 더 나은 텍스트 편집기로 전환합니다. ) =; 그럼 당신은 당신이 원하는 경우 소스 코드에서 chineese 쓰기 또는 내 첫 코멘트의 대상이 PPL의 범주에서 체류 할 수 있습니다 en.wikipedia.org/wiki/Character_encoding
사무엘 Rossille에게

4
@Bluefire, 메모장 ++은 잘 처리해야합니다. 메뉴의 인코딩을 UTF-8 또는 UCS-2로 변경하면됩니다.
Heretic Monkey

답변:


197

실제로 대문자 오메가가 포함문자열Omega되고 싶 습니까? 이 경우 다음과 같이 쓸 수 있습니다.

var Omega = '\u03A9';

(Ω이기 때문에 코드 포인트 U + 03A9와 유니 코드 문자 ,이며 03A9이다 937. 네 개의 16 진수로 기록 된 것을 제외하고는,)


4
그리고 유니 코드 문자열의 16 진수 값이 무엇인지 알고 싶다면 : mothereff.in/js-escapes
StanE

JavaScript 내에서 유니 코드 문자열의 16 진수 값을 얻는 다른 방법은 다음과 같습니다. "Ω".codePointAt (0) .toString (16);
KostasX

53

@ruakh가 좋은 대답을했지만 완전성을위한 대안을 추가 할 것입니다.

실제로 var Omega = 'Ω'JavaScript 에서도 사용할 수 있지만 JavaScript 코드가 다음과 같은 경우에만 가능합니다.

  • 다음과 같이 이벤트 속성 내부 onclick="var Omega = '&#937'; alert(Omega)" 또는
  • A의 scriptXML 콘텐츠 유형에 게재 된 XHTML (또는 XHTML +의 XML) 문서 내의 요소입니다.

이 경우 코드가 먼저 (JavaScript 인터프리터로 전달되기 전에) HTML 구문 분석기로 구문 분석되어 문자 참조가 Ω 가 인식됩니다. 제한 사항으로 인해 대부분의 경우이 방법이 실용적이지 않습니다.

다음과 같이 Ω 문자를 입력 할 수도 있습니다. var Omega = 'Ω' 있지만 문자 인코딩이이를 허용하고 인코딩을 올바르게 선언해야하며 이러한 문자를 입력 할 수있는 소프트웨어가 필요합니다. 이것은 깨끗한 솔루션이며 모든 것에 UTF-8 인코딩을 사용하고 그로 인해 발생한 문제를 처리 할 준비가되어 있다면 실현 가능합니다. 소스 코드를 읽을 수 있고 읽을 때 코드 표기법 대신 문자 자체를 즉시 볼 수 있습니다. 반면에 다른 사람들이 코드 작업을 시작하면 놀라움을 줄 수 있습니다.

\u에서와 같이 표기법을 사용하면 var Omega = '\u03A9'문자 인코딩과 독립적으로 작동하며 실제로 거의 보편적입니다. 그러나 U + FFFF까지만 사용할 수 있습니다. 즉 \uffff, 대부분의 사람들이 들어 본 대부분의 문자는 해당 영역에 속합니다. "더 높은"문자가 필요한 경우 서로 게이트 쌍 또는 위의 두 가지 접근 방법 중 하나를 사용해야합니다.

String.fromCharCode()메소드를 사용하여 문자를 구성 할 수 있으며 , 유니 코드 번호를 10 진수로 var Omega = String.fromCharCode(937)또는 16 진수로 매개 변수로 전달할 수 var Omega = String.fromCharCode(0x3A9)있습니다. 이것은 U + FFFF까지 작동합니다. 변수에 유니 코드 번호가있는 경우에도이 방법을 사용할 수 있습니다.


18
5 년 후, 사람들은 이제 이모 지 (emoji)라고 불리는 것을 U+FFFF범위 밖에서 사용 합니다. 자바 스크립트도 있으므로이를 수행 할 수 있습니다. var poop = '\u{1F4A9}';
사용자가 아닌 사용자

1
@Userthatisnotauser 및 허용 대답해야합니다!
Marten Koetsier

JavaScript에서 '0x1F512'인 하나의 코드를 사용하여 'open lock'문자 '\ uD83D \ uDD13'을 삽입하는 방법은 무엇입니까? 그리고 하나의 문자를 삽입하기 위해 두 개의 코드가 필요한 이유는 무엇입니까?
tarekahf

5
@tarekahf 다음은 유니 코드에 대한 간단한 강의입니다. UTF-16은 유니 코드 포인트 U + 0000에서 U + FFFF까지만 스팬되었습니다. 그런 다음 UTF-16이 해당 지점에 액세스 할 수 있도록 유니 코드가 커지고 서로 게이트가 개발되었습니다. 그러나 JavaScript는 이제 이것을 할 수 있습니다 : var lock = '\u{1F512}'그리고 당신은 이것을 얻습니다 : 🔓
사용자가 아닌 사용자

4

답은 정확하지만 변수를 선언 할 필요는 없습니다. 문자열은 당신의 캐릭터를 포함 할 수 있습니다 :

"This string contains omega, that looks like this: \u03A9"

불행히도 여전히 ASCII의 코드는 UTF-8을 표시하는 데 필요하지만 UTF-8이 ASCII와 같을 날을 여전히 기다리고 있습니다 (아수 년이 지나서야 ...). ASCII는 과거.


9
그림 이모티콘은 이러한 코드를 입력하기가 더 어려워집니다! \u{1F641}= 🙁
사용자가 아닌 사용자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.