2015-02-11 121 views

回答

1

對於可以是多字節的編碼,不能期望得到與所有情況下開始時相同的字節。在UTF-8的情況下,某些字符需要多個字節才能正確表示。

在您的示例中,0xde超過了0x7f,它是可以由單個字節表示的字符的最大值。因此,當您調用.toString('utf8')時,節點會看到它只有一個字節,而是返回UTF-8字符\uFFFD(十六進制中的0xef, 0xbf, 0xbd),用於表示未知/不可表示字符。然後回讀這個「替換字符」的值回到一個新的緩衝區是沒有問題的,因爲它是一個有效的UTF-8字符。

+0

感謝您的回答。對我而言,這聽起來像我需要使用另一種類型的字符串編碼選項,如十六進制或base64。 – jtrfe 2015-02-11 18:55:46

+0

那些應該工作得很好。 – mscdex 2015-02-11 18:58:43