2
tl; dr如何使用stream.ReadByte()
讀取可變長度編碼的文本?將UTF16作爲字節讀取
龍版本:
我想讀,有一些文字和一些二進制數據的文件。這使用諸如StreamReader
這樣的方法創建了一個問題,因此我正在讀取這些字節並將它們轉換爲文本。只要文本是ASCII,這很簡單,因爲一個字節轉換爲一個字符。
但是,如果已知文本以UTF16編碼 - 字符的長度是可變的。那麼如何使用stream.ReadByte()
並將其轉換爲UTF16?
以utf16編碼的文本不會比ascii中編碼的文本更長,也不會更少。您正在專注於錯誤的問題,一次解碼單個字節或單個字符或單個代碼點不是很明智。 Encoding.GetString()無論你如何擺動那隻貓,都需要byte []。 –
@HansPassant使用ASCII我只是讀取字節,直到一個等於''\ n''的ACII值。然後,我將所有這些字節提供給'GetString'。對於UTF,我沒有(簡單的)檢查行結束的方法。 – ispiro
這對於utf-16來說並不完全不同,使用ReadUInt16()。採用2個元素的代碼點永遠不會匹配'\ n'。 –