Это простое Java-приложение, которое отображает кодовую страницу по умолчанию в Windows:
package doscommand;
import java.io.IOException;
import java.io.InputStream;
public class DosCommand {
public static void main(String[] args) throws IOException {
InputStream in = Runtime.getRuntime().exec("chcp.com").getInputStream();
int ch;
StringBuilder chcpResponse = new StringBuilder();
while ((ch = in.read()) != -1) {
chcpResponse.append((char) ch);
}
System.out.println(chcpResponse); // For example: "Active code page: 437"
}
}
На моем компьютере с Windows 10 это приложение всегда отображает "Активную кодовую страницу:437 ", поскольку Cp437 является значением по умолчанию, а Runtime.getRuntime().exec()
запускает новый Process
при запуске chcp.com
.
Возможно ли создать приложение Java, которое вместо этого отображает текущая активная кодовая страница для существующего Командная строка окно, в котором выполняется код?
Я хочу иметь возможность сделать что-то подобное из Командная строка :
chcp 1252
java -jar "D:\NB82\DosCommand\dist\DosCommand.jar" REM Shows current code page is "1252".
chcp 850
java -jar "D:\NB82\DosCommand\dist\DosCommand.jar" REM Shows current code page is "850".
Как указать значение Java file.encoding в соответствии с базовой кодовой страницей Windows? задал похожий вопрос, хотя в этом случаеOP искал решение, не относящееся к Java.
Я бы предпочел решение только на Java, но в качестве альтернативы:
- Можно ли это сделать с помощью JNI, вызвав некоторый C/ C ++ / C # код с доступом к Windows API?Вызываемый код должен только возвращать числовое значение для активной кодовой страницы.
- Я приму ответ, который убедительно утверждает, что это невозможно сделать.