diff --git a/client.diff/src/main/java/com/github/gumtreediff/client/diff/swing/MappingsPanel.java b/client.diff/src/main/java/com/github/gumtreediff/client/diff/swing/MappingsPanel.java index 4f3d92599..7af897fcb 100644 --- a/client.diff/src/main/java/com/github/gumtreediff/client/diff/swing/MappingsPanel.java +++ b/client.diff/src/main/java/com/github/gumtreediff/client/diff/swing/MappingsPanel.java @@ -97,10 +97,11 @@ public MappingsPanel(String srcPath, String dstPath, TreeContext src, TreeContex add(split); try { + String charset = System.getProperty("gt.charset.decoding", "UTF-8"); txtSrc.getUI().getEditorKit(txtSrc).read(Files.newBufferedReader(Paths.get(srcPath), - Charset.forName("UTF-8")), txtSrc.getDocument(), 0); + Charset.forName(charset)), txtSrc.getDocument(), 0); txtDst.getUI().getEditorKit(txtDst).read(Files.newBufferedReader(Paths.get(dstPath), - Charset.forName("UTF-8")), txtDst.getDocument(), 0); + Charset.forName(charset)), txtDst.getDocument(), 0); } catch (IOException | BadLocationException e) { e.printStackTrace(); } diff --git a/client.diff/src/main/java/com/github/gumtreediff/client/diff/web/HtmlDiffs.java b/client.diff/src/main/java/com/github/gumtreediff/client/diff/web/HtmlDiffs.java index 203534184..a7cd62d2d 100644 --- a/client.diff/src/main/java/com/github/gumtreediff/client/diff/web/HtmlDiffs.java +++ b/client.diff/src/main/java/com/github/gumtreediff/client/diff/web/HtmlDiffs.java @@ -125,8 +125,9 @@ public void produce() throws IOException { } } + String charset = System.getProperty("gt.charset.decoding", "UTF-8"); StringWriter w1 = new StringWriter(); - BufferedReader r = Files.newBufferedReader(fSrc.toPath(), Charset.forName("UTF-8")); + BufferedReader r = Files.newBufferedReader(fSrc.toPath(), Charset.forName(charset)); int cursor = 0; while (r.ready()) { @@ -141,7 +142,7 @@ public void produce() throws IOException { srcDiff = w1.toString(); StringWriter w2 = new StringWriter(); - r = Files.newBufferedReader(fDst.toPath(), Charset.forName("UTF-8")); + r = Files.newBufferedReader(fDst.toPath(), Charset.forName(charset)); cursor = 0; while (r.ready()) { diff --git a/core/src/main/java/com/github/gumtreediff/gen/TreeGenerator.java b/core/src/main/java/com/github/gumtreediff/gen/TreeGenerator.java index f72059401..aaea8761e 100644 --- a/core/src/main/java/com/github/gumtreediff/gen/TreeGenerator.java +++ b/core/src/main/java/com/github/gumtreediff/gen/TreeGenerator.java @@ -33,6 +33,8 @@ public abstract class TreeGenerator { protected abstract TreeContext generate(Reader r) throws IOException; + protected String charset = System.getProperty("gt.charset.decoding", "UTF-8"); + public TreeContext generateFromReader(Reader r) throws IOException { TreeContext ctx = generate(r); ctx.validate(); @@ -40,18 +42,23 @@ public TreeContext generateFromReader(Reader r) throws IOException { } public TreeContext generateFromFile(String path) throws IOException { - return generateFromReader(Files.newBufferedReader(Paths.get(path), Charset.forName("UTF-8"))); + return generateFromReader(Files.newBufferedReader(Paths.get(path), Charset.forName(charset))); } public TreeContext generateFromFile(File file) throws IOException { - return generateFromReader(Files.newBufferedReader(file.toPath(), Charset.forName("UTF-8"))); + return generateFromReader(Files.newBufferedReader(file.toPath(), Charset.forName(charset))); } public TreeContext generateFromStream(InputStream stream) throws IOException { - return generateFromReader(new InputStreamReader(stream, "UTF-8")); + return generateFromReader(new InputStreamReader(stream, charset)); } public TreeContext generateFromString(String content) throws IOException { return generateFromReader(new StringReader(content)); } + + public TreeGenerator setCharset(String charset) { + this.charset = charset; + return this; + } }