Re: [問題] 編碼問題

看板java作者 (say)時間13年前 (2013/02/07 01:11), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
這個狀況是兩個問題造成的。 必要知識: http://en.wikipedia.org/wiki/Byte_order_mark ※ 引述《airizumo ( 歐巴馬)》之銘言: : 想請問各位先進 : 我有一個檔案(utf-8)用ultra打開看到的是 : FF FE 54 00 4F 00 4F 00 4C 00 .... => TOOL... wiki 上說 FF FE 開頭的是 UTF-16 (LE),接著的 TOOL 也再次證實。 我不熟 UltraEdit,但這看起來似乎是它幫你做了 UTF-8 轉 UTF-16 (LE) 的動作。 所以你看到的 hex 並不是真正的原始資料。 : 但用byte[]讀取檔案字串時 : byte[] content : for(int i=0;i<content.length;i++){ : s2 = s2 + String.valueOf(Integer.toHexString(b[i]))+ " "; : } : 最後的讀出來的卻是 : ffffffef ffffffbb ffffffbf 54 4f 4f 4c .... 再次參看 wiki,得知 UTF-8 的 BOM 應為: EF BB BF 與你的結果對照,只差在這些 byte 前面都多了 ffffff。 java 的 byte 型態是 signed byte,範圍在 -128 ~ 127 之間, 當你的值落在 0x80 ~ 0xFF 之間時,會被視為負數, 所以會顯示這樣的結果並不意外。 : 想請問一樣是show出每一個byte結果卻會有一段落差?? : 另外想請問若我用byte[] 讀取ANSI檔案後有辦法將裡面的byte轉成相對應的utf-8編碼嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.78.231 ※ 編輯: tkcn 來自: 140.114.78.231 (02/07 01:14)

02/07 23:55, , 1F
UltraEdit 開啟utf8編碼的文件是使用unicode編輯
02/07 23:55, 1F
文章代碼(AID): #1H4ewdTK (java)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #1H4ewdTK (java)