Re: [問題] big5轉utf8
※ 引述《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
→
03/25 15:56, , 1F
03/25 15:56, 1F
推
03/25 16:13, , 2F
03/25 16:13, 2F
→
03/25 16:15, , 3F
03/25 16:15, 3F
→
03/25 16:18, , 4F
03/25 16:18, 4F
→
03/25 16:27, , 5F
03/25 16:27, 5F
→
03/25 17:51, , 6F
03/25 17:51, 6F
推
03/26 02:26, , 7F
03/26 02:26, 7F
→
03/26 02:28, , 8F
03/26 02:28, 8F
→
03/26 02:30, , 9F
03/26 02:30, 9F
→
03/30 22:28, , 10F
03/30 22:28, 10F
→
03/30 22:30, , 11F
03/30 22:30, 11F
→
03/30 22:31, , 12F
03/30 22:31, 12F
討論串 (同標題文章)