2011-08-15 9 views
23

자바 스크립트 '\uXXXX'은 유니 코드 문자로 반환됩니다. 하지만 XXXX 부분이 변수 일 때 어떻게 유니 코드 문자를 얻을 수 있습니까? 예를 들어문자열을 유니 코드 문자로 변환하려면 어떻게해야합니까?

는 :

var input = '2122'; 
console.log('\\u' + input);    // returns a string: "\u2122" 
console.log(new String('\\u' + input)); // returns a string: "\u2122" 

나는 그것이 작동되도록하는 생각할 수있는 유일한 방법은, eval를 사용하는 것입니다;

var input = '2122'; 
var char = '\\u' + input; 
console.log(eval("'" + char + "'")); // returns a character: "™" 

답변

23

사용과 같은 String.fromCharCode() : String.fromCharCode(parseInt(input,16)) 아직 나는 더 나은 솔루션이 희망. \u을 사용하는 문자열에 유니 코드 값을 입력하면이 값은 16 진수 값으로 해석되므로 parseInt을 사용할 때는 base (16)를 지정해야합니다.

+1

감사하지만, 이것은 여전히 ​​상표에'2122'를 – Harmen

+0

이'으로 parseInt는 (입력, 16)'일을 할 것 같다 기호 변환하지 않습니다 ;) – Harmen

+0

@Harmen 나는 포스트를 편집했으나 10 초 동안 나를 때렸다. –

13

String.fromCharCode("0x" + input)

또는

String.fromCharCode(parseInt(input, 16))가 16 비트 숫자 (UTF-16)만큼

따라서

7

JavaScript uses UCS-2 internally.

, String.fromCharCode(codePoint) 보충 유니 코드 문자를 사용할 수 없습니다. codePoint이 일 경우 (예 : '' 인 경우 0x1D306).

// `String.fromCharCode` replacement that doesn’t make you enter the surrogate halves separately 
punycode.ucs2.encode([0x1d306]); // '' 
punycode.ucs2.encode([119558]); // '' 
punycode.ucs2.encode([97, 98, 99]); // 'abc' 
0
var hex = '2122'; 
var char = unescape('%u' + hex); 

console.log(char); 
:가 아닌 BMP 유니 코드 코드 포인트를 기반으로 문자열을 만들려면

, 당신은 UCS-2 문자열과 UTF-16 코드 포인트 사이의 변환 Punycode.js의 유틸리티 기능을 사용할 수 있습니다

`) (fromCharCode라는`에 저를 연결하기위한 반환 "™"

관련 문제