2015-01-13 36 views
1

所以,現在我正在用Java編寫一個小包閱讀器。 所有的Unicode字符串都有句點(或者至少它們是如何在十六進制編輯器中呈現的),所以當我讀取它們時,我需要轉到偏移量併爲分配的內存讀取該信息。就像,如果它是來自Xbox 360文件的遊戲名稱,我需要讀取80個字節並從中刪除'。'以獲得可讀的字符串。爲什麼Unicode字符間存有句點?

那麼爲什麼unicode這樣存儲在文件中?是表示它是Unicode還是它是分配填充還是什麼?

我不確定我的問題是否有效,它只是一直在我心中。 謝謝。

+1

它最有可能就是您的十六進制編輯器如何嘗試將空字符顯示爲文本。 –

+0

@AlexK。 - 我理解像空終止符,但爲什麼字符之間會有空字符? – user3530525

+1

閱讀utf-16。對於ASCII字符的表示,最高有效字節爲0 – bolov

回答

4

在記事本中創建一個包含「A」的文件,將其保存爲Unicode,並且Windows將使用UTF-16(LE)編碼來執行此操作;這使用2個字節來存儲字符:0x41 0x00

當您查看十六進制編輯器文件(其中一無所知,也不關心文本編碼)0x41可以顯示爲A,但00映射到任何字符所以.(或同等學歷)顯示,讓您知道那裏有一個字節。

+0

感謝您的解釋:)有道理。 – user3530525

相關問題