ConEmu (CMD) не идентифицирует эти символы Юникода?
public void print(boolean nextLine, int delayInt, String load) throws UnsupportedEncodingException {
PrintStream p = new PrintStream(System.out, true,"UTF-8");
for(int x = 0; x < load.length(); x++ ){
p.print(load.charAt(x));
try{
Thread.sleep(delayInt);
}catch (Exception ex){
ex.printStackTrace();
}
}
if(nextLine)
System.out.println();
}
Хорошо, выше приведен способ печати каждого символа в строке, я использую PrintStream, потому что я чувствовал, что он позволит мне использовать все символы Unicode, когда я компилирую и выполняю программу Java в ConEmu (которую я использую вместо CMD @ Windows)
i.print(true, 50,"\n" +
"\n" +
"▓█████▄ ██▓ ██████ ▄████▄ ▒█████ ██▒ █▓ ▓█████ ██▀███ \n" +
"▒██▀ ██▌ ▓██▒ ▒██ ▒ ▒██▀ ▀█ ▒██▒ ██▒ ▓██░ █▒ ▓█ ▀ ▓██ ▒ ██▒ \n" +
"░██ █▌ ▒██▒ ░ ▓██▄ ▒▓█ ▄ ▒██░ ██▒ ▓██ █▒░ ▒███ ▓██ ░▄█ ▒ \n" +
"░▓█▄ ▌ ░██░ ▒ ██▒ ▒▓▓▄ ▄██▒ ▒██ ██░ ▒██ █░░ ▒▓█ ▄ ▒██▀▀█▄ \n" +
"░▒████▓ ░██░ ▒██████▒▒ ▒ ▓███▀ ░ ░ ████▓▒░ ▒▀█░ ░▒████▒ ░██▓ ▒██▒ \n" +
" ▒▒▓ ▒ ░▓ ▒ ▒▓▒ ▒ ░ ░ ░▒ ▒ ░ ░ ▒░▒░▒░ ░ ▐░ ░░ ▒░ ░ ░ ▒▓ ░▒▓░ \n" +
" ░ ▒ ▒ ▒ ░ ░ ░▒ ░ ░ ░ ▒ ░ ▒ ▒░ ░ ░░ ░ ░ ░ ░▒ ░ ▒░ \n" +
" ░ ░ ░ ▒ ░ ░ ░ ░ ░ ░ ░ ░ ▒ ░░ ░ ░░ ░ \n" +
" ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ \n" +
" ░ ░ ░ \n" +
"\n"
);
i.print(true, 2, "\n" +
"\n" +
" ▄█ ▄████████ \n" +
"███ ███ ███ \n" +
"███▌ ███ ███ \n" +
"███▌ ███ ███ \n" +
"███▌ ▀███████████ \n" +
"███ ███ ███ \n" +
"███ ███ ███ \n" +
"█▀ ███ █▀ \n" +
" \n" +
" ▄█ ▄█ ▄█ ▀█████████▄ ▄████████ ▄█ ▄████████ ▄█ ▄█▄ ▄█ ▄█ ▄█ \n" +
"███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄███▀ ███ ███ ███ \n" +
"███▌ ███▌ ███▌ ███ ███ ███ ███ ███▌ ███ █▀ ███▐██▀ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ▄███▄▄▄██▀ ▄███▄▄▄▄██▀ ███▌ ███ ▄█████▀ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ▀▀███▀▀▀██▄ ▀▀███▀▀▀▀▀ ███▌ ███ ▀▀█████▄ ███▌ ███▌ ███▌ \n" +
"███ ███ ███ ███ ██▄ ▀███████████ ███ ███ █▄ ███▐██▄ ███ ███ ███ \n" +
"███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███▄ ███ ███ ███ \n" +
"█▀ █▀ █▀ ▄█████████▀ ███ ███ █▀ ████████▀ ███ ▀█▀ █▀ █▀ █▀ \n" +
" ███ ███ ▀ \n" +
" ▄█ ▄█ ▄█ ▀█████████▄ ▄████████ ▄████████ ▄████████ ▄█ ▄█▄ ▄████████ ▄████████ ▄█ ▄█ ▄█ \n" +
"███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▄███▀ ███ ███ ███ ███ ███ ███ ███ \n" +
"███▌ ███▌ ███▌ ███ ███ ███ ███ ███ █▀ ███ ███ ███▐██▀ ███ █▀ ███ ███ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ▄███▄▄▄██▀ ▄███▄▄▄▄██▀ ▄███▄▄▄ ███ ███ ▄█████▀ ▄███▄▄▄ ▄███▄▄▄▄██▀ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ▀▀███▀▀▀██▄ ▀▀███▀▀▀▀▀ ▀▀███▀▀▀ ▀███████████ ▀▀█████▄ ▀▀███▀▀▀ ▀▀███▀▀▀▀▀ ███▌ ███▌ ███▌ \n" +
"███ ███ ███ ███ ██▄ ▀███████████ ███ █▄ ███ ███ ███▐██▄ ███ █▄ ▀███████████ ███ ███ ███ \n" +
"███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ▀███▄ ███ ███ ███ ███ ███ ███ ███ \n" +
"█▀ █▀ █▀ ▄█████████▀ ███ ███ ██████████ ███ █▀ ███ ▀█▀ ██████████ ███ ███ █▀ █▀ █▀ \n" +
" ███ ███ ▀ ███ ███ \n" +
" ▄█ ▄█ ▄█ ▄████████ ▄████████ ████████▄ ███ █▄ ▄████████ ▄█ ▄█ ▄█ ▄█ \n" +
"███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ ███ \n" +
"███▌ ███▌ ███▌ ███ █▀ ███ █▀ ███ ███ ███ ███ ███ █▀ ███ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ███ ▄███▄▄▄ ███ ███ ███ ███ ▄███▄▄▄ ███ ███▌ ███▌ ███▌ \n" +
"███▌ ███▌ ███▌ ▀███████████ ▀▀███▀▀▀ ███ ███ ███ ███ ▀▀███▀▀▀ ███ ███▌ ███▌ ███▌ \n" +
"███ ███ ███ ███ ███ █▄ ███ ███ ███ ███ ███ █▄ ███ ███ ███ ███ \n" +
"███ ███ ███ ▄█ ███ ███ ███ ███ ▀ ███ ███ ███ ███ ███ ███▌ ▄ ███ ███ ███ \n" +
"█▀ █▀ █▀ ▄████████▀ ██████████ ▀██████▀▄█ ████████▀ ██████████ █████▄▄██ █▀ █▀ █▀ \n" +
" ▀ \n" +
" ▄█ \n" +
"███ \n" +
"███▌ \n" +
"███▌ \n" +
"███▌ \n" +
"███ \n" +
"███ \n" +
"█▀ \n" +
" \n" +
"\n" +
" \n");
Однако в IDE, как и ожидалось, он работает, но в ConEmu он показывает ошибку "testing.java:50: error: не отображаемый символ (0x90) для кодирования windows-1252". Я проверил решения, но они возникают только при наличии код символа '\uXXXX', который в данном случае не используется, поскольку я использовал онлайновый ASCII Art Generator. Генератор ASCII ART, который я использовал
1 ответ
Согласно документации ConEmu:
UTF-8 (UTF8)
В Windows, в отличие от Unix, сама консоль представляет собой не поток "байтов", а электронную таблицу ячеек, каждая из которых содержит символ UTF-16 и атрибут цвета.
Это означает, что если ваше приложение выдает выходные данные, используя однобайтовые или многобайтовые наборы символов (например, ANSI, OEM, UTF-8 и многие другие), Windows автоматически преобразует эти выходные данные в UTF-16 в отношении активной кодовой страницы, выбранной в консоли (запустите chcp из командной строки консоли для проверки вашей активной кодовой страницы).
Если вы хотите работать с кодировкой UTF-8, вы должны выбрать UTF-8 в качестве активной кодовой страницы консоли. Просто выполните команду chcp 65001, чтобы сделать это. Вы можете вызвать эту команду из командной строки или запустить ее до оболочки в содержимом задачи ConEmu. Конечно, ваше приложение должно иметь возможность выводить данные, используя UTF-8. Обратитесь к руководству по применению.
Просто войдите в свой терминал ConEmu, и вы сможете увидеть контент UTF-8:
chcp 65001
Также вам нужно немного изменить исходный код и сохранить его как файл UTF-8:
public void print(boolean nextLine, int delayInt, String load) throws UnsupportedEncodingException {
for(int x = 0; x < load.length(); x++ ){
// Use the regular System.out.print here to output chars!
System.out.print(load.charAt(x));
try{
Thread.sleep(delayInt);
}catch (Exception ex){
ex.printStackTrace();
}
}
if(nextLine)
System.out.println();
}
Скомпилируйте скрипт запуска:
chcp 65001
java test