diff --git a/src/BusinessCardManagement.java b/src/BusinessCardManagement.java index de6a39e..c586802 100644 --- a/src/BusinessCardManagement.java +++ b/src/BusinessCardManagement.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.net.URISyntaxException; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -19,7 +20,10 @@ public class BusinessCardManagement { - public final Charset CHARSET = java.nio.charset.Charset.forName("Shift_JIS"); + public final Charset[] CHARSETS = { + StandardCharsets.UTF_8, + java.nio.charset.Charset.forName("Shift_JIS") + }; private Screen screen; private ScreenTemplates screenTemplates; @@ -174,7 +178,15 @@ File selectedFile = fileChooser.getSelectedFile(); Map>> businessCardData = new HashMap<>(); try { - List lines = Files.readAllLines(selectedFile.toPath(), CHARSET); + List lines = new ArrayList<>(); + for (Charset charset: CHARSETS) { + try { + lines = Files.readAllLines(selectedFile.toPath(), charset); + break; + } catch (java.nio.charset.MalformedInputException e) { + continue; + } + } for (int i = 1; i < lines.size(); i++) { String line = lines.get(i); String[] value = parseCSV(line); @@ -265,7 +277,15 @@ if (Files.notExists(path)) { return; } - List lines = Files.readAllLines(path, CHARSET); + List lines = new ArrayList<>(); + for (Charset charset : CHARSETS) { + try { + lines = Files.readAllLines(path, charset); + break; + } catch (java.nio.charset.MalformedInputException e){ + continue; + } + } for (String line : lines) { String[] values = parseCSV(line); @@ -370,7 +390,7 @@ } sb.deleteCharAt(sb.length() - 1); System.out.println(sb.toString()); - Files.write(path, sb.toString().getBytes(CHARSET)); + Files.write(path, sb.toString().getBytes(CHARSETS[0])); } catch (URISyntaxException | IOException e) { e.printStackTrace(); JOptionPane.showMessageDialog(mainPanel, "ファイルの保存に失敗しました。");