Node.js v21.7.2 文件
- Node.js v21.7.2
- ► 目錄
-
► 索引
- 斷言測試
- 非同步背景追蹤
- 非同步掛鉤
- 緩衝區
- C++ 外掛程式
- 使用 Node-API 的 C/C++ 外掛程式
- C++ 嵌入式 API
- 子程序
- 叢集
- 命令列選項
- 主控台
- Corepack
- 加密
- 偵錯工具
- 已棄用的 API
- 診斷頻道
- DNS
- 網域
- 錯誤
- 事件
- 檔案系統
- 全域變數
- HTTP
- HTTP/2
- HTTPS
- 檢查工具
- 國際化
- 模組:CommonJS 模組
- 模組:ECMAScript 模組
- 模組:
node:module
API - 模組:套件
- 網路
- 作業系統
- 路徑
- 效能掛鉤
- 權限
- 程序
- Punycode
- 查詢字串
- Readline
- REPL
- 報告
- 單一可執行應用程式
- 串流
- 字串解碼器
- 測試執行器
- 計時器
- TLS/SSL
- 追蹤事件
- TTY
- UDP/資料報
- URL
- 公用程式
- V8
- VM
- WASI
- Web Crypto API
- Web Streams API
- 工作執行緒
- Zlib
- ► 其他版本
- ► 選項
字串解碼器#
穩定性:2 - 穩定
node:string_decoder
模組提供一個 API,用於將 Buffer
物件解碼為字串,並保留編碼的多位元組 UTF-8 和 UTF-16 字元。可以使用以下方式存取:
const { StringDecoder } = require('node:string_decoder');
以下範例顯示 StringDecoder
類別的基本用法。
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');
const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // Prints: ¢
const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // Prints: €
將 Buffer
執行個體寫入 StringDecoder
執行個體時,會使用內部緩衝區來確保解碼的字串不包含任何不完整的多位元組字元。這些字元會保留在緩衝區中,直到下一次呼叫 stringDecoder.write()
或呼叫 stringDecoder.end()
為止。
在以下範例中,歐元符號 (€
) 的三個 UTF-8 編碼位元組會透過三個不同的操作寫入
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');
decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // Prints: €
類別:StringDecoder
#
new StringDecoder([encoding])
#
建立新的 StringDecoder
執行個體。
stringDecoder.end([buffer])
#
buffer
<字串> | <Buffer> | <TypedArray> | <DataView> 要解碼的位元組。- 傳回:<string>
傳回儲存在內部緩衝區中的任何剩餘輸入,作為字串。代表不完整的 UTF-8 和 UTF-16 字元的位元組將會以適當於字元編碼的替代字元取代。
如果提供 buffer
參數,則在傳回剩餘輸入之前,會對 stringDecoder.write()
執行最後一次呼叫。在呼叫 end()
之後,stringDecoder
物件可以重複用於新的輸入。
stringDecoder.write(buffer)
#
buffer
<字串> | <Buffer> | <TypedArray> | <DataView> 要解碼的位元組。- 傳回:<string>
傳回已解碼的字串,確保 Buffer
、TypedArray
或 DataView
結尾的任何不完整多位元組字元都會從傳回的字串中省略,並儲存在內部緩衝區中,以供下次呼叫 stringDecoder.write()
或 stringDecoder.end()
使用。