妿äºè¿å¶æ°æ®å®é 䏿¯ä¸ä¸ªå符串æä¹åï¼ä¾å¦ï¼æä»¬æ¶å°äºä¸ä¸ªå å«ææ¬æ°æ®çæä»¶ã
å 建ç TextDecoder 对象å¨ç»å®ç¼å²åºï¼bufferï¼åç¼ç æ ¼å¼ï¼encodingï¼çæ åµä¸ï¼å 许å°å¼è¯»å为å®é ç JavaScript å符串ã
é¦å æä»¬éè¦å建ï¼
let decoder = new TextDecoder([label], [options]);
labelââ ç¼ç æ ¼å¼ï¼é»è®¤ä¸ºutf-8ï¼ä½åæ¶ä¹æ¯æbig5ï¼windows-1251ç许å¤å ¶ä»ç¼ç æ ¼å¼ãoptionsââ å¯é对象ï¼fatalââ å¸å°å¼ï¼å¦æä¸ºtrueåä¸ºæ æï¼ä¸å¯è§£ç ï¼å符æåºå¼å¸¸ï¼å¦åï¼é»è®¤ï¼ç¨å符\uFFFDæ¿æ¢æ æå符ãignoreBOMââ å¸å°å¼ï¼å¦æä¸ºtrueåå¿½ç¥ BOMï¼å¯éçåèé¡ºåº Unicode æ è®°ï¼ï¼å¾å°éè¦ä½¿ç¨ã
â¦â¦ç¶åè§£ç ï¼
let str = decoder.decode([input], [options]);
inputââ è¦è¢«è§£ç çBufferSourceãoptionsââ å¯é对象ï¼streamââ 对äºè§£ç æµï¼ä¸º trueï¼åå°ä¼ å ¥çæ°æ®åï¼chunkï¼ä½ä¸ºåæ°éå¤è°ç¨decoderãå¨è¿ç§æ åµä¸ï¼å¤åèçå符å¯è½å¶å°ä¼å¨åä¸åä¹é´è¢«åå²ãè¿ä¸ªé项åè¯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) ); // ä½ å¥½
æä»¬å¯ä»¥éè¿ä¸ºå ¶åå»ºåæ°ç»è§å¾æ¥è§£ç é¨åç¼å²åºï¼
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 ç¼ç ã
å®æä¸¤ç§æ¹æ³ï¼
encode(str)ââ ä»å符串è¿åUint8ArrayãencodeInto(str, destination)ââ å°strç¼ç å°destinationä¸ï¼è¯¥ç®æ å¿ é¡»ä¸ºUint8Arrayã
let encoder = new TextEncoder();
let uint8Array = encoder.encode("Hello");
alert(uint8Array); // 72,101,108,108,111
è¯è®º
<code>æ ç¾æå ¥åªæå 个è¯ç代ç ï¼æå ¥å¤è¡ä»£ç å¯ä»¥ä½¿ç¨<pre>æ ç¾ï¼å¯¹äºè¶ è¿ 10 è¡ç代ç ï¼å»ºè®®ä½ ä½¿ç¨æ²ç®±ï¼plnkrï¼JSBinï¼codepenâ¦ï¼