看板 java 關於我們 聯絡資訊
回覆一下推文的疑惑 其實本來都要有encoding參數,因為你要告訴java你要用什麼編碼來解析這個字串 如果沒有帶,那java會用系統的預設編碼。 假設我們現在是收big5字串,再假設getByte後的Array是 [1A,2B] 但是系統是UTF8,那想要將這個Array轉成字串,java會用UTF-8的編碼進行轉換 就會亂碼了。 這個情形就可以在轉換時,加上encoding參數,告訴java我這個Array是BIG5哦 請先用BIG5做轉換,轉換完畢再java裡面就是unicode, 這個時候拿著轉換後的String做任何事都不會有問題了。 這是我實際試過得到的結果,我不知道觀念對不對 但就是一個原則,如果編碼有錯亂,那就是訊息進來或出去時,都要告知java正確的編碼 也就是加上encoding啦!!!! ※ 引述《danny8376 (釣到一隻猴子@_@)》之銘言: : ※ 引述《Lordaeron (Terry)》之銘言: : : Java 的 String 內部是 Unicode 是指什麼呢? : : 你打開一個Big5存的文字檔, 讀取其中的內容, 用READLINE, 讀到字串中, : : 哪麼, 這字串的編碼會是? : 內部是unicode存在記憶體 : 就像Win現行所有程式在記憶體內都是UTF-16編碼一樣的狀況 : 也就是說當你用big5去讀取big5的檔案 : 這中間會把檔案用你指定的big5去解碼 : 解完之後轉成unicode(UTF-16)之後塞進記憶體裡 : 而當你要輸出到OutputStream的時候 : 又會把這unicode轉成你要的編碼 : 這是所有支援unicode的程式內部會有的處理模式 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.152.244 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1395756605.A.CD4.html