ConEmu (CMD) не идентифицирует эти символы Юникода? - PullRequest
0 голосов
/ 09 января 2019
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: ошибка: не отображаемый символ (0x90) для кодирования windows-1252». Я проверил решения, но они предназначены только для тех случаев, когда у меня есть код символа «\ uXXXX», которого в данном случае нет Я использовал онлайн ASCII Art Generator. ASCII ART Generator, который я использовал

1 Ответ

0 голосов
/ 10 января 2019

Согласно документации ConEmu :

UTF-8 (UTF8)

В Windows, в отличие от Unix, сама консоль представляет собой не «байтовый» поток, а электронную таблицу ячеек, каждая из которых содержит символ UTF-16 и атрибут цвета.

Это означает, что если ваше приложение выдает выходные данные с использованием однобайтовых или многобайтовых наборов символов (например, ANSI, OEM, UTF-8 и многих других), Windows автоматически преобразует этот вывод в UTF-16 относительно активной кодовой страницы, выбранной в вашем console (запустите chcp из командной строки console, чтобы проверить активную кодовую страницу).

Если вы хотите работать с кодировкой 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

Результат, который я получаю в консоли ConEmu: enter image description here

...