Skip to content

Commit d3c79a9

Browse files
committed
1 parent 45d4c1d commit d3c79a9

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package io.github.fvarrui.javapackager.utils;
2+
3+
import java.io.BufferedReader;
4+
import java.io.InputStreamReader;
5+
import java.nio.charset.Charset;
6+
import java.util.regex.Matcher;
7+
import java.util.regex.Pattern;
8+
9+
public class CharSetUtil {
10+
11+
public static Charset getCommandLineChartSet(){
12+
try{
13+
Process p = Runtime.getRuntime().exec("cmd /k chcp");
14+
BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream()));
15+
String res = br.readLine();
16+
String code = find("\\d+",res);
17+
switch (code){
18+
case "936": return Charset.forName("GBK");
19+
case "65001": return Charset.forName("UTF-8");
20+
}
21+
}catch (Exception e){
22+
return Charset.defaultCharset();
23+
}
24+
return Charset.forName("UTF-8");
25+
}
26+
27+
private static String find(String pattern,String data){
28+
Pattern r = Pattern.compile(pattern);
29+
Matcher matcher = r.matcher(data);
30+
matcher.find();
31+
return matcher.group();
32+
}
33+
34+
}

src/main/java/io/github/fvarrui/javapackager/utils/CommandUtils.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package io.github.fvarrui.javapackager.utils;
22

33
import java.io.*;
4-
import java.nio.charset.Charset;
54

65
import org.apache.commons.lang3.StringUtils;
76
import org.codehaus.plexus.util.cli.CommandLineException;
@@ -45,7 +44,7 @@ public static ExecutionResult executeWithResult(File workingDirectory, String ex
4544

4645
Process process = command.execute();
4746

48-
BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream(), Charset.forName("GBK")));
47+
BufferedReader output = new BufferedReader(new InputStreamReader(process.getInputStream(), CharSetUtil.getCommandLineChartSet()));
4948
BufferedReader error = new BufferedReader(new InputStreamReader(process.getErrorStream()));
5049
while (process.isAlive() || output.ready() || error.ready()) {
5150
if (output.ready()) {

0 commit comments

Comments
 (0)