看板 java 關於我們 聯絡資訊
※ 引述《Lordaeron (Terry)》之銘言: : ※ 引述《LPH66 (186106078)》之銘言: : : getBytes 應該就正是你所需要的東西 : : String.getBytes 共有四個 overload, 其中一個是舊時代的東西所以不管它 : : 剩下的三個是 : : getBytes() : : getBytes(Charset) : : getBytes(String) : : 你用的應該是第一個, 它會轉成你的 system default charset : : 你所需要的則是第二或第三個, 所傳進去的參數代表你要轉成的 charset : : 第二個用 Charset 物件, 第三個則是直接傳入那個 Charset 的名字 : : 最簡單的做法就是用第三個然後傳入 "UTF-8" 就可以了 : : --- : : 另外順帶一提, Java 的 String 內部是 Unicode : : 如果從來源字串有正確的轉成 String 的話那這個問題就跟來源字串完全無關了 : : 檢查方法可以試著直接把那個 String 給印出來, 是你要的那就沒問題 : Java 的 String 內部是 Unicode 是指什麼呢? : 你打開一個Big5存的文字檔, 讀取其中的內容, 用READLINE, 讀到字串中, : 哪麼, 這字串的編碼會是? 內部是unicode存在記憶體 就像Win現行所有程式在記憶體內都是UTF-16編碼一樣的狀況 也就是說當你用big5去讀取big5的檔案 這中間會把檔案用你指定的big5去解碼 解完之後轉成unicode(UTF-16)之後塞進記憶體裡 而當你要輸出到OutputStream的時候 又會把這unicode轉成你要的編碼 這是所有支援unicode的程式內部會有的處理模式 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.216.102
Lordaeron:若果是這麼聰明, 為何會有encoding的參數的呢? 03/25 15:56
LPH66:"這中間會把檔案用你指定的big5去解碼" 該參數就是這個指定 03/25 16:13
LPH66:當不指定時通常會取用我所寫的 system default charset 03/25 16:15
LPH66:所以這部份很多人並不會去注意到, 因為已經這樣處理掉了 03/25 16:18
Lordaeron:你還是回一下我的問題吧. 03/25 16:27
danny8376:用big5 你要的編碼 <= 這就是encoding參數 懂? 03/25 17:51
LPH66:咦, 我以為我在二樓已經回了你的問題了...看來是我語焉不詳 03/26 02:26
LPH66:我應該要詳細說"你問的encoding參數就是這回文中所提到的 03/26 02:28
LPH66:「用你指定的big5」這個指定" 這樣才不會被忽略過去... 03/26 02:30
adrianshum:Java 中 "字串" 的編碼永遠是 UTF-16. Period. 03/30 22:28
adrianshum:Lordaeron 建議還是去看一些基礎的文章之類,搞清楚 03/30 22:30
adrianshum:byte & char 在 Java 中的概念。 03/30 22:31