Re: [問題] 編碼問題
這個狀況是兩個問題造成的。
必要知識: 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
02/07 23:55, 1F
討論串 (同標題文章)