ãããã¤ããªãã¼ã¿ãå®éã«ã¯æååã ã£ããã©ããã¾ããï¼ä¾ãã°ããã¹ããã¼ã¿ãæã¤ãã¡ã¤ã«ãåãåãã¾ããã
çµã¿è¾¼ã¿ã® TextDecoder ãªãã¸ã§ã¯ãã使ãã¨ãæå®ããããããã¡ã¨ã¨ã³ã³ã¼ãã£ã³ã°ãããå¤ãå®éã® JavaScript æååã¨ãã¦èªããã¨ãã§ãã¾ãã
æåã« TextDecoder ã使ããå¿ è¦ãããã¾ã:
let decoder = new TextDecoder([label], [options]);
labelâ ã¨ã³ã³ã¼ãã£ã³ã°ãããã©ã«ãã§ã¯utf-8ã§ãããbig5,windows-1251ããã®ä»å¤ãããµãã¼ããã¦ãã¾ããoptionsâ ãªãã·ã§ã³ã®ãªãã¸ã§ã¯ã:fatalâ boolean,trueã®å ´åãç¡å¹(ãã³ã¼ãä¸å¯è½)ãªæåã®å ´åã¯ä¾å¤ãã¹ãã¼ããããã§ãªããã°ï¼ããã©ã«ãï¼ããããã\uFFFDã«ç½®ãæãã¾ããignoreBOMâ boolean,trueã®å ´åãBOM (ãªãã·ã§ã³ã®ãã¤ããªã¼ãã¼ãã¼ã¯)ãç¡è¦ãã¾ãããã£ãã«ä½¿ããã¾ããã
â¦ããã¦ãã³ã¼ããã¾ã:
let str = decoder.decode([input], [options]);
inputâ ãã³ã¼ã対象ã®BufferSourceã§ãoptionsâ ãªãã·ã§ã³ã®ãªãã¸ã§ã¯ã:streamâdecoderãå ¥ã£ã¦ãããã¼ã¿ã®ãã£ã³ã¯ã«å¯¾ãç¹°ãè¿ãå¼ã³åºãããã¨ããã¹ããªã¼ã ããã³ã¼ãããå ´åã¯trueã§ãããã®å ´åããã«ããã¤ãæåããã£ã³ã¯éã§åå²ãããå¯è½æ§ãããã¾ãããã®ãªãã·ã§ã³ã¯ âæªå®äºâ ã®æåãè¨æ¶ãã¦ã次ã®ãã£ã³ã¯ãæ¥ãæã«ãããããã³ã¼ãããããã«TextDecoderã«ä¼ãã¾ãã
ä¾:
let uint8Array = new Uint8Array([72, 101, 108, 108, 111]);
alert( new TextDecoder().decode(uint8Array) ); // Hello
let uint8Array = new Uint8Array([228, 189, 160, 229, 165, 189]);
alert( new TextDecoder().decode(uint8Array) ); // ä½ å¥½
ãµãã¢ã¬ã¤(subarray)ãã¥ã¼ã使ãããã¨ã§ããããã¡ã®ä¸é¨ããã³ã¼ããããã¨ãã§ãã¾ã:
let uint8Array = new Uint8Array([0, 72, 101, 108, 108, 111, 0]);
// æååãä¸å¤®ã«ããã¾ã
// ã³ãã¼ããã«ãæ°ãããã¥ã¼ã使ãã¾ã
let binaryString = uint8Array.subarray(1, -1);
alert( new TextDecoder().decode(binaryString) ); // Hello
TextEncoder
TextEncoder ã¯éã®ãã¨ â æååããã¤ãã«ãã¾ãã
æ§æã¯æ¬¡ã®éãã§ã:
let encoder = new TextEncoder();
ãµãã¼ããã¦ããã¨ã³ã³ã¼ãã£ã³ã°ã¯ âutf-8â ã ãã§ãã
2ã¤ã®ã¡ã½ãããããã¾ã:
encode(str)â æååããUint8Arrayãè¿ãã¾ããencodeInto(str, destination)âstrãdestinationã«ã¨ã³ã³ã¼ããã¾ããdestinationã¯Uint8Arrayã§ãªããã°ãªãã¾ããã
let encoder = new TextEncoder();
let uint8Array = encoder.encode("Hello");
alert(uint8Array); // 72,101,108,108,111
ã³ã¡ã³ã
<code>ã¿ã°ã使ã£ã¦ãã ãããè¤æ°è¡ã®å ´åã¯<pre>ãã10è¡ãè¶ ããå ´åã«ã¯ãµã³ãããã¯ã¹ã使ã£ã¦ãã ãã(plnkr, JSBin, codepenâ¦)ã