Re: [問題] big5轉utf8

看板java作者 (釣到一隻猴子@_@)時間10年前 (2014/03/25 15:47), 編輯推噓2(2010)
留言12則, 4人參與, 最新討論串6/8 (看更多)
※ 引述《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
若果是這麼聰明, 為何會有encoding的參數的呢?
03/25 15:56, 1F

03/25 16:13, , 2F
"這中間會把檔案用你指定的big5去解碼" 該參數就是這個指定
03/25 16:13, 2F

03/25 16:15, , 3F
當不指定時通常會取用我所寫的 system default charset
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
用big5 你要的編碼 <= 這就是encoding參數 懂?
03/25 17:51, 6F

03/26 02:26, , 7F
咦, 我以為我在二樓已經回了你的問題了...看來是我語焉不詳
03/26 02:26, 7F

03/26 02:28, , 8F
我應該要詳細說"你問的encoding參數就是這回文中所提到的
03/26 02:28, 8F

03/26 02:30, , 9F
「用你指定的big5」這個指定" 這樣才不會被忽略過去...
03/26 02:30, 9F

03/30 22:28, , 10F
Java 中 "字串" 的編碼永遠是 UTF-16. Period.
03/30 22:28, 10F

03/30 22:30, , 11F
Lordaeron 建議還是去看一些基礎的文章之類,搞清楚
03/30 22:30, 11F

03/30 22:31, , 12F
byte & char 在 Java 中的概念。
03/30 22:31, 12F
文章代碼(AID): #1JCJIKA1 (java)
討論串 (同標題文章)
文章代碼(AID): #1JCJIKA1 (java)