程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java IO文件編碼轉換完成代碼

Java IO文件編碼轉換完成代碼

編輯:關於JAVA

Java IO文件編碼轉換完成代碼。本站提示廣大學習愛好者:(Java IO文件編碼轉換完成代碼)文章只能為提供參考,不一定能成為您想要的結果。以下是Java IO文件編碼轉換完成代碼正文


對IO操作真心不是很懂。。。對編碼、亂碼也是一知半解。。。明天碰到了一個需求,請求將一個文件停止編碼轉換,而且前往編碼後的字符串,如本來的GBK編碼,轉換為UTF-8

個中這個BytesEncodingDetect 類就不貼了。重要用了外面的獲得文件編碼格局。

剛開端試了直接在源文件修正編碼方法,采取URLEncoder和URLDecoder停止轉換,卻遲遲不可。湧現了中文奇數最初一個字亂碼

百度找懂得決辦法,都未果,只好采取我的思緒是:先讀取源文件的內容,寄存到StringBuffer外面,然後刪除源文件,再從新new一個文件,再以另外一中編碼情勢寄存出來。

檢查編碼後後果:留意不要在eclipse檢查後果,eclipse以一種編碼情勢檢查罷了,所以可以在閱讀器端檢查如html文件,檢查指定編碼可以右鍵---編碼,以此來斷定能否勝利。


package com.test;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.URLDecoder;
import java.net.URLEncoder;

public class Transcoding {
 private BytesEncodingDetect encode = new BytesEncodingDetect();
 public Transcoding() {
 }

 /**
  * 編碼轉換
  * @param toCharset 要轉換的編碼
  * @param path 要轉換的文件途徑
  * @return
  * @throws Exception
  */
 public String encoding(String toCharset, String path) throws Exception{
  File srcFile = new File(path);
  int index = encode.detectEncoding(srcFile);
  String charset = BytesEncodingDetect.javaname[index];
  // 編碼雷同,無需轉碼
  if (charset.equalsIgnoreCase(toCharset)) {
   return "編碼一樣,無需轉換";
  }

  InputStream in = new FileInputStream(path);

  BufferedReader br = new BufferedReader(
    new InputStreamReader(in, charset));

  StringBuffer sb = new StringBuffer();
  String s1;
  while ((s1=br.readLine())!=null) {
   String s = URLEncoder.encode(s1, toCharset);
   sb.append(s+"\r\n");//一行+回車
  }

  br.close();
  srcFile.delete();//刪除本來文件
  //從新以新編碼寫入文件並前往值
  File newfile = new File(path);//從新建本來的文件
  newfile.createNewFile();
  OutputStream out = new FileOutputStream(newfile);
  OutputStreamWriter  writer = new OutputStreamWriter(out, toCharset);
  BufferedWriter bw = new BufferedWriter(writer);
  bw.write(URLDecoder.decode(sb.toString(), toCharset));
  String result = URLDecoder.decode(sb.toString(), toCharset);
  bw.flush();//刷到文件中
  bw.close();
  return result;
 }

}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved