Heim  >  Artikel  >  Java  >  So konvertieren Sie ein GBK-Projekt mit Java in die uft8-Methodenfreigabe

So konvertieren Sie ein GBK-Projekt mit Java in die uft8-Methodenfreigabe

黄舟
黄舟Original
2017-08-13 09:34:001563Durchsuche

In diesem Artikel werden hauptsächlich Beispiele für Methoden zum Konvertieren von GBK-Projekten in uft8 mit Java vorgestellt. Der Herausgeber findet es recht gut, daher werde ich es jetzt mit Ihnen teilen und als Referenz verwenden. Folgen wir dem Editor und werfen wir einen Blick darauf.

Dieser Artikel stellt die Verwendung von Java zum Konvertieren von GBK-Projekten in uft8 vor und teilt sie mit allen. Die Details sind wie folgt:

Die Standardcodierung unten Windows ist GBK und GB2312. Wenn Sie die Projektkodierung direkt ändern, werden die chinesischen Zeichen in den darin enthaltenen Java-Dateien tatsächlich verstümmelt.

Warum transkodieren?

Einige alte Projekte oder Projekte von Freunden haben nicht bemerkt, dass sie unter Windows nicht UTF8 sind. Wenn Sie Kommentare oder ähnliches lesen müssen, können Sie die Codierungsattribute nicht einzeln ändern.

Der Testumfang dieses Programms

GBK-Code oder GB2312-Projekt können konvertiert werden

Die Idee der Codierungskonvertierung

Ursprünglich wollte ich ein universelles Programm machen, das Kodierungen automatisch erkennen und automatisch konvertieren kann. Aufgrund der ungenauen Beurteilung des Codierungstyps wurde jedoch eine Konvertierung in GBK vorgenommen.

  1. Geben Sie die GBK-Kodierung an, um den Dateistream zu lesen, ihn in den Speicher zu laden und in einen String-Inhalt zu konvertieren.

  2. Konvertieren Sie den String-Inhalt in utf8-String

  3. String-Inhalt in Datei schreiben

Kerncode:


public class TransferProject{
  public static void transferFile(String pathName,intdepth)throwsException{
    File dirFile = new File(pathName);
    if (!isValidFile(dirFile)) return;
    //获取此目录下的所有文件名与目录名
    String[] fileList = dirFile.list();
    int currentDepth = depth + 1;
    for (int i = 0; i < fileList.length; i++) {
      String string = fileList[i];
      File file = new File(dirFile.getPath(), string);
      String name = file.getName();
      //如果是一个目录,搜索深度depth++,输出目录名后,进行递归
      if (file.isDirectory()) {
        //递归
        transferFile(file.getCanonicalPath(), currentDepth);
      } else {
        if (name.contains(".java") || name.contains(".properties") || name.contains(".xml")) {
          readAndWrite(file);
          System.out.println(name + " has converted to utf8 ");
        }
      }
    }
  }

 
  private static boolean isValidFile(File dirFile)throwsIOException{
    if (dirFile.exists()) {
      System.out.println("file exist");
      return true;
    }
    if (dirFile.isDirectory()) {
      if (dirFile.isFile()) {
        System.out.println(dirFile.getCanonicalFile());
      }
      return true;
    }
    return false;
  }

  private static void readAndWrite(File file)throwsException{
    String content = FileUtils.readFileByEncode(file.getPath(), "GBK");
    FileUtils.writeByBufferedReader(file.getPath(), new String(content.getBytes("UTF-8"), "UTF-8"));
  }

  public static void main(String[] args)throwsException{
    //程序入口,制定src的path
    String path = "/Users/mac/Downloads/unit06_jdbc/src";
    transferFile(path, 1);
  }
}


public class FileUtils{
  public static void writeByBufferedReader(String path, String content){
    try {
      File file = new File(path);
      file.delete();
      if (!file.exists()) {
        file.createNewFile();
      }

      FileWriter fw = new FileWriter(file, false);
      BufferedWriter bw = new BufferedWriter(fw);
      bw.write(content);
      bw.flush();
      bw.close();

    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  public staticStringreadFileByEncode(String path, String chatSet)throwsException{
    InputStream input = new FileInputStream(path);
    InputStreamReader in = new InputStreamReader(input, chatSet);
    BufferedReader reader = new BufferedReader(in);
    StringBuffer sb = new StringBuffer();
    String line = reader.readLine();
    while (line != null) {
      sb.append(line);
      sb.append("\r\n");
      line = reader.readLine();
    }
    return sb.toString();
  }
}

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie ein GBK-Projekt mit Java in die uft8-Methodenfreigabe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn