部分显示来自java的cmd.exe中的unicode字符,没有来自shell命令的字符

oyxsuwqo  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(282)

我遇到一些JavaUnicode输出问题。我试过多种方法,我知道可以看到unicode字符,但它们前面有一个带问号的菱形。
这是我用记事本创建的测试文件:


以下是使用notepad++的文件:

以下是我的cmd.exe输出:

cmd字体设置:

cmd /U ,仍然没有字符(发现这里使用了不同的字体[consolas],这就是为什么它的问号在方框中):

windows版本:

我也尝试了powershell,它似乎认为它是一种不同的编码:

我写了一个小的java程序,可以打印unicode,但是在某些情况下它前面有一个额外的字符。

public class App {

  private static final Logger logger = LogManager.getLogger(App.class);

  public static void main(String[] args) {
    Charset utf8Charset = Charset.forName("UTF-8");
    Charset defaultCharset = Charset.defaultCharset();

    System.out.println(defaultCharset);

    System.out.println("A ?");
    System.out.println("B ✔ ");
    System.out.println("C ❌");     
  }
}

然后用以下标志运行这个java应用程序

java -Dfile.encoding=UTF-8

以下是输出:

为什么我的java应用程序可以打印unicode而不能直接打印cmd.exe?
java如何添加cmd.exe不知道的字符?
我还可以测试/尝试/更改什么以使unicode表现更好。
笔记:
我读到露西达控制台应该工作;我试过所有的字体, NSimSun 显示了x和复选标记,但没有表情符号。不过,这种字体对我来说有点难。
当我在word中打开txt文件时,如果我选择了所有文本并将其设置为consolas或lucida console,它似乎会将emojis更改为segoe ui,因此可能字体不支持它-尽管我看到其他帖子建议lucida console应该工作?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题