"java在執行的時候所有的字元都是被轉成unicode, 包含編譯後的.class檔案", 請問一下java在讀取與寫入的時候他的編碼是如何轉換的?
讀取部分 :
假設這時我使用FileInputStream來讀取一個utf-8的檔案,
FileInputStream f = new FileInputStream("d:\test.txt");
while((length = stream.read(buffer, 0, 1024)) != -1) {
String str = new String(buffer, 0, length);
}
這時我印出length, 他所顯示中文字元是占用了3個byte(length = 3)代表是UTF-8不是unicode, JVM什麼時候會將他轉成unicode呢? 不是說字元都是unicode處理嗎?
寫入部分 :
OutputStream os = new FileOutputStream("d:\\one.txt", true);
String str = "hello world 測試\r\n";
byte[] buffer = str.getBytes();
os.write(buffer);
os.close();
這時系統自動產生的檔案是UTF-8格式, 網路上說會以作業系統的預設編碼的格式, 寫入的內容當然也是UTF-8編碼, 這部分不太確定~
我想請問寫入時strm 會先經過JVM將str以 unicode編碼 再轉成 UTF-8輸出嗎?
如果上面有錯誤的地方再麻煩各位修正