Maison > Java > javaDidacticiel > le corps du texte

Comment utiliser Java pour convertir le projet GBK en partage de méthode uft8

黄舟
Libérer: 2017-08-13 09:34:00
original
1621 Les gens l'ont consulté

Cet article présente principalement des exemples de méthodes pour convertir des projets GBK en uft8 en utilisant Java. L'éditeur pense que c'est plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur et jetons un coup d'œil.

Cet article présente l'utilisation de Java pour convertir les projets GBK en uft8 et le partage avec tout le monde. Les détails sont les suivants :

L'encodage par défaut sous. Windows est GBK et gb2312. Comment convertir le projet Java de GBK en utf8 ? Si vous modifiez directement l'encodage du projet, les caractères chinois dans les fichiers Java à l'intérieur seront en fait tronqués. J'ai écrit un programme pour convertir par lots des projets Java pour le plaisir.

Pourquoi transcoder ?

Certains anciens projets, ou projets d'amis, n'ont pas remarqué qu'ils ne sont pas UTF8 sous Windows. Si vous avez besoin de lire des commentaires ou autre, vous ne pouvez pas modifier les attributs d'encodage un fichier à la fois.

La portée d'essai de ce programme

Le code gbk ou le projet gb2312 peut être converti

L'idée de conversion d'encodage

À l'origine, je voulais en faire un programme universel capable de détecter automatiquement les encodages et de les convertir automatiquement. Cependant, en raison d’une évaluation inexacte du type de codage, une conversion en GBK a été effectuée.

  1. Spécifiez l'encodage gbk pour lire le flux de fichiers, chargez-le en mémoire et convertissez-le en contenu de type String

  2. Convertir le contenu de String en utf8 String

  3. Écrire le contenu de la chaîne dans un fichier

Code principal :


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);
  }
}
Copier après la connexion


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();
  }
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal