InputStreamReader/OutputStreamWriter亂碼問題解決


/*

*InputStreamReader參數charset要跟文件編碼格式一致。 InputStreamReader讀的時候才不會亂碼。

*OutputStreamWriter參數charset設置編碼例如UTF-8。在操作系統打開文件時候也要用相應編碼打開才不會亂碼。

*InputStreamReader:讀操作時編碼要與文件編碼一致。OutputStreamWriter寫操作時設置編碼打開文件時也要以相同編碼打開。

*/

public class Test{

 

/*記事本讀寫

*寫字板編碼轉化為UTF-8的方式非常簡單,用記事本打開文件,文件->另存為->在編碼中選擇uft-8保存就可以了。

*注意:666.txt和999.txt文件編碼都要是UTF-8編碼才能保證讀寫不會亂碼。

*/

public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/666.txt")),"UTF-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/999.txt")),"UTF-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(buffer, 0, len);
}
writer.flush();
writer.close();
}

 

/*word讀寫*/

public static void main(String[] args) throws IOException {
Reader reader = new InputStreamReader(new FileInputStream(new File("e:/123.doc")),"utf-8");
Writer writer = new OutputStreamWriter(new FileOutputStream(new File("e:/456.doc")),"utf-8");
char[] buffer = new char[1024];
int len = 0;
while((len=reader.read(buffer))!= -1){
System.out.println(new String(buffer,0,len));
writer.write(new String(buffer,0,len));
}
writer.flush();
writer.close();
}

 

/*

*創建記事本999.txt

*OutputStreamWriter(FileOutputStream,charset)以UTF-8編碼寫出,正確寫法。

*問題導致原因:999.txt默認以寫字板方式打開就亂碼,寫字板打開打開的時候解碼解錯,以UTF-8打開問題解決或者換高級編輯器打開。

*/

public static void main(String[] args) throws IOException {
String file = "e:\\999.txt";
String charset = "UTF-8";
FileOutputStream outputStream = new FileOutputStream(file);
Writer writer = new OutputStreamWriter(outputStream, charset);
try {
writer.write("字符流寫亂碼。。。");
} finally {
writer.close();
}
}

 

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM