在C#中,采用System.IO.StreamReader和System.IO.StreamWriter直接讀寫(xiě)UTF-8編碼的文件,因?yàn)樵谶@兩個(gè)類(lèi)可以指定讀取或者寫(xiě)入文件的編碼格式,而其默認(rèn)編碼則是UTF-8。 而在Java中,如果我們用java.io.FileReader或者java.io.FileWriter來(lái)讀寫(xiě)文件的話,固然我們可以通過(guò) java.io.BufferedReader和java.io.BufferedWriter來(lái)提高效率,但是我們會(huì)發(fā)現(xiàn)在FileReader和 FileWriter中我們只能獲取編碼方式,而不能設(shè)置。這樣,在FileReader和FileWriter中的編碼設(shè)置只能服從于一些更為底層的設(shè)置,那么在讀寫(xiě)多種語(yǔ)言編碼的文件時(shí)就很容易出現(xiàn)亂碼。 另外一種方法就是采用java.io.FileInputStream/java.io.InputStreamReader和 java.io.FileOutputStream/java.io.OutputStreamWriter來(lái)解決這個(gè)問(wèn)題。在 InputStreamReader和OutputStreamWriter中,可以通過(guò)指定編碼方式來(lái)完成UTF-8文件的讀寫(xiě)。 比如: java.io.BufferedWriter writer = null; java.io.FileOutputStream writerStream = new java.io.FileOutputStream(filename); writer = new java.io.BufferedWriter(new java.io.OutputStreamWriter(writerStream, "UTF-8")); // do something // writing file writer.close(); |
|
來(lái)自: 軟件團(tuán)隊(duì)頭目 > 《IO》