轉換流:字元流和位元組流之間的橋梁 用於處理程式的編碼問題 OutputStreamWriter類:字元轉位元組流 寫文本文件: InputStreamReader類: 位元組轉字元流過程: 這裡讀取上面寫的文本文件: 這裡註意,如果編碼集和讀取問文本不一致,就會發生亂碼或者輸出?的問題 ...
轉換流:字元流和位元組流之間的橋梁
用於處理程式的編碼問題
OutputStreamWriter類:字元轉位元組流
寫文本文件:
package demo; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; public class Demo { public static void main(String[] args) throws IOException { writeGBK(); writeUTF8(); } public static void writeGBK() throws IOException { FileOutputStream fos = new FileOutputStream("d:\\gbk.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos, "GBK"); osw.write("你好");// gbk的一個漢字是2個位元組 osw.close(); } public static void writeUTF8() throws IOException { FileOutputStream fos = new FileOutputStream("d:\\utf8.txt"); OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8"); osw.write("你好");// utf8的一個漢字是3個位元組 osw.close(); } }
InputStreamReader類:
位元組轉字元流過程:
這裡讀取上面寫的文本文件:
package demo; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; public class Demo { public static void main(String[] args) throws IOException { readGBK(); readUTF8(); } public static void readGBK() throws IOException { FileInputStream fis = new FileInputStream("d:\\gbk.txt"); InputStreamReader isr = new InputStreamReader(fis); char[] ch = new char[1024]; int len = isr.read(ch); System.out.println(new String(ch, 0, len)); } public static void readUTF8() throws IOException { FileInputStream fis = new FileInputStream("d:\\utf8.txt"); InputStreamReader isr = new InputStreamReader(fis, "UTF-8"); char[] ch = new char[1024]; int len = isr.read(ch); System.out.println(new String(ch, 0, len)); } }
這裡註意,如果編碼集和讀取問文本不一致,就會發生亂碼或者輸出?的問題