ConEmu(CMD)无法识别这些unicode字符?

时间:2019-01-09 19:42:04

标签: java conemu

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();
}

好吧,以上是一种打印String中每个字符的方法,我使用的是PrintStream,因为我感觉这将允许我在ConEmu中编译和执行Java程序时使用所有Unicode字符(我使用的是代替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 which I have used

1 个答案:

答案 0 :(得分:1)

根据ConEmu documentation

  

UTF-8(UTF8)

     

在Windows上,与Unix不同,控制台本身不是“字节”流,而是一个单元格电子表格,每个电子表格包含一个UTF-16字符和一个color属性。

     

这意味着,如果您的应用程序使用单字节或多字节字符集(即ANSI,OEM,UTF-8和许多其他字符集)产生输出,则Windows将根据您选择的活动代码页自动将该输出转换为UTF-16。控制台(从控制台命令提示符处运行chcp以检查您的活动代码页)。

     

如果要使用UTF-8编码,则必须选择UTF-8作为活动控制台代码页。只需运行chcp 65001命令即可。您可以从shell提示符中调用此命令,也可以在ConEmu任务内容中的shell之前运行它。当然,您的应用程序必须能够使用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