2016-01-19 29 views
5

私は16進コード1f610を持っていますので、フォーマット文字列は\u{1f610}と表示されます。しかし、それを16進コードからどのようにエスケープできますか?javascript文字列に16進数のエスケープ

私はにそれをアンエスケープするために何をすべき

var code = '1f610'; 

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

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

をしましたか?

+0

Googleはこの答えに私を指摘:http://stackoverflow.com/questions/4209104 /デコード-hex-string-in-javascript – dovidweisz

+0

私は試みましたが、うまくいきませんでした、感謝@wapsee :) –

答えて

2

これはアストラルセット文字です。これはJavaScript文字列に2文字必要です。 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>

(またunescape機能がdeprecatdであることに注意してください。)

関連する問題