2016-01-19 14 views
5

Mam kod szesnastkowy 1f610, więc ciąg formatu jest \u{1f610} z na wyświetlaczu. Ale jak mogę go usunąć z kodu szesnastkowego?Unescape javascript hex na ciąg

zrobiłem

var code = '1f610'; 

unescape('%u' + code); //=> ὡ0 

unescape('%u' + '{' + code + '}'); //=> %u{1f610} 

co należy zrobić, aby go przywróceniu znaczenia?

+0

Google wskazał mi tej odpowiedzi: http://stackoverflow.com/questions/4209104/decoding-hex-string-in-javascript – dovidweisz

+0

Próbowałem, ale nie działało, dzięki @wapsee :) –

Odpowiedz

2

Jest to postać zestawu astralnego, która wymaga dwóch znaków w ciągu JavaScript.

Adaptacja Wikipedia:

var code = '1f610'; 
 
var unicode = parseInt(code, 16); 
 
var the20bits = unicode - 0x10000; 
 
var highSurrogate = (the20bits >> 10) + 0xD800; 
 
var lowSurrogate = (the20bits & 1023) + 0xDC00; 
 
var character = String.fromCharCode(highSurrogate) + String.fromCharCode(lowSurrogate); 
 
console.log(character);
<!-- results pane console output; see http://meta.stackexchange.com/a/242491 --> 
 
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

(Należy również pamiętać, że unescape funkcja jest deprecatd.)