1. 程式人生 > >Java實現將任何編碼方式的txt檔案以UTF-8編碼方式轉存

Java實現將任何編碼方式的txt檔案以UTF-8編碼方式轉存

本文利用JDK中的BufferedReader和BufferedWriter實現將任何編碼方式的txt檔案以UTF-8編碼方式轉存。

UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,又稱萬國碼,由Ken Thompson於1992年建立。現在已經標準化為RFC 3629。UTF-8用1到6個位元組編碼Unicode字元。用在網頁上可以統一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。UTF-8最大的優勢是可以避免亂碼問題。

本方法首先判斷txt檔案的編碼方式,然後按照其編碼方式按行讀取,再按行以UTF-8的編碼寫入。其中藉助EncodingDetect類檢測txt檔案的編碼方式。

/**
     * 
     * @param inputFileUrl
     * @param outputFileUrl
     * @throws IOException
     */
    public static void saveAsUTF8(String inputFileUrl, String outputFileUrl) throws IOException {
        String inputFileEncode = EncodingDetect.getJavaEncode(inputFileUrl);
        System.out.println(
"inputFileEncode===" + inputFileEncode); BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(new FileInputStream(inputFileUrl), inputFileEncode)); BufferedWriter bufferedWriter = new BufferedWriter( new OutputStreamWriter(new FileOutputStream(outputFileUrl), "UTF-8")); String line;
while ((line = bufferedReader.readLine()) != null) { bufferedWriter.write(line + "\r\n"); } bufferedWriter.close(); bufferedReader.close(); String outputFileEncode = EncodingDetect.getJavaEncode(outputFileUrl); System.out.println("outputFileEncode===" + outputFileEncode); System.out.println("txt檔案格式轉換完成"); }

 測試程式碼:

String inputFileUrl = "C:\\Users\\Administrator\\Desktop\\傲慢與偏見.txt";
String outputFileUrl = "C:\\Users\\Administrator\\Desktop\\utf8\\傲慢與偏見.txt";
saveAsUTF8(inputFileUrl, outputFileUrl);