** Wie benutzt man ** Sammeln Sie die Textdateien, die Sie in das UTF-8-Format konvertieren möchten, in einem Ordner. Schreiben Sie den Speicherort des Ordners, in dem "Ordnerpfad" steht. Schreiben Sie den Pfad wie folgt. (Ich denke, Sie müssen ein "\" für die Escape-Verarbeitung hinzufügen) Beispiel) C: \ Benutzer \ IhrName \ Desktop \ Ordner
Bei der Ausführung wird ein Ordner mit dem Namen "konvertiert" am selben Speicherort wie die Datei erstellt und die konvertierte Datei wird darin gespeichert (mit Ausnahme von Shift-JIS).
** Grund für die Herstellung ** Als ich von iPhone zu Android wechselte, hatte ich nicht die Memo-App (Textforce), die ich unter Android verwendete. Daher wechselte ich zu einer anderen Memo-App (Simplenote). Als ich die vorherigen Memos portierte, waren die auf dem PC erstellten Memos aufgrund des unterschiedlichen Zeichencodes unterschiedlich. Weil alle Charaktere verstümmelt wurden. Ich hätte das nicht selbst tun müssen, wenn ich eine Light-App gehabt hätte, die auf Android verwendet werden könnte und Text im Shift-JIS-Format lesen könnte, der einfach auf einem Computer oder Smartphone synchronisiert werden könnte ... Bitte lassen Sie mich wissen, wenn jemand empfiehlt
SJIS2UTF8.java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Arrays;
public class SJIS2UTF {
public static void main(String[] args) {
SJIS2UTF stu = new SJIS2UTF();
stu.readFolder(new File("Ordnerpfad"));
}
public void readFolder(File dir) {
File[] files = dir.listFiles();
String fileName;
if (files == null) {
return;
}
for (File file : files) {
if (!file.exists()) {
continue;
} else if (file.isDirectory()) {
readFolder(file);
} else if (file.isFile()) {
try {
byte[] byteOfFile = convertFile(file);
fileName = file.getName();
if (isSJIS(byteOfFile)) {
encodeStoU(file, fileName);
} else {
System.out.println(fileName + "Ist nicht SJIS");
}
} catch (IOException e) {
System.out.println("IOException-Fehler");
}
}
}
}
public void encodeStoU(File file, String fileName) {
String parentPath = file.getParent();
String sourcePath = parentPath + "\\" + fileName;
String destFolder = parentPath + "\\converted";
String destPath = parentPath + "\\converted\\" + fileName;
File folder = new File(destFolder);
if (!folder.exists()) {
try {
Files.createDirectory(Paths.get(destFolder));
Files.createFile(Paths.get(destFolder, fileName));
} catch (IOException e1) {
e1.printStackTrace();
}
}
try {
File sourceFile = new File(sourcePath);
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(sourceFile), "Shift-JIS"));
File destFile = new File(destPath);
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(destFile), "UTF-8"));
String line;
while ((line = br.readLine()) != null) {
bw.write(line);
bw.newLine();
}
br.close();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public byte[] convertFile(File file) throws IOException {
return Files.readAllBytes(file.toPath());
}
public static boolean isSJIS(byte[] src) {
try {
byte[] tmp = new String(src, "Shift_JIS").getBytes("Shift_JIS");
return Arrays.equals(tmp, src);
} catch (UnsupportedEncodingException e) {
return false;
}
}
}
Recommended Posts