打印unicode' black flag' cmd.exe

时间:2015-09-25 20:20:47

标签: windows unicode utf-8 cmd character-encoding

在Windows(10)框中,为什么我要打印黑旗' (U + 2691)字符在某些地方而不是其他地方(特别是cmd.exe)?

使用评论中提议的提示进行更新(尚无答案): - [来自Kevin] CMD.exe Unicode支持是可疑的(未指定,但注销我遇到的奇怪CMD.exe行为的问题) - [来自Mark]进程应该写入ConsoleAPI而不是stdout。 - [来自李斯特先生]更改字体。

我更改了Webstorm中的字体。它正在使用monospaced,并正确显示了标志。我切换到ConsolasLucida SansCourier New,并且它在所有这些中都有效。我看了the list of supported unicode chars for Lucida Console,事实上,U + 2691不在那里。因此,Webstorm可能会有一些后备机制来支持这个角色。

我运行ConEmu,并将基本字体设置为Lucida控制台,将替代字体设置为DejaVu Sans,我从here下载。我必须手动调整Unicode范围,将其设置为2013-3000。瞧,黑旗显示出来了。因此,虽然第一部分现在(有点)已经解决,但我仍然不知道这里的字体与图形和代码页是怎么回事。我认为在处理一些unicode时,代码页是一个红色的鲱鱼...所以,如果有人有任何确定的话,我会喜欢一个正确的答案。 ; - )

注意,我将cmd.exe字体设置为Lucida控制台和当前代码页为(UTF-8)65001。我还尝试过其他字体...和chcp 1252.是的,我已阅读{{3这是非常好的。我认为我缺少的是Kevin在评论中所说的内容(cmd.exe没有正确的 Unicode支持)以及Mark关于绕过stdout的内容。这解释了cmd.exe,但很想知道更多关于VS vs VS Code和NP ++ ...

我可以看到chrome中的字符很好:

http://graphemica.com/⚑
http://graphemica.com/%E2%9A%91

我可以在其中一个中看到它很好:

  • Office(Word,Outlook)
  • WebStorm
  • Visual Studio

但是,我在这里看不到它(显示为方框):

  • 记事本++
  • Visual Studio代码
  • cmd.exe的

如果我在节点中运行它:

console.log('\u2691:', '\u2691');
console.log('Flag:', '⚑')

它只是转储盒子(当我在这里复制和粘贴时很好)。

然后还有其他字符如:重复复选标记(U + 2714)

the Spolsky post http://graphemica.com/%E2%9C%94

其中'出现'在Visual Studio代码中(无法显示标志)但不会显示在cmd.exe中。

这里似乎有很多活动部分:Unicode,字符代码,代码页,字体等等。

有人可以帮我解决这个问题吗?到底发生了什么?

  1. 为什么角色会在某些地方展示而不在另一个地方展示?

  2. 我有什么办法可以在cmd.exe中显示字符吗?

1 个答案:

答案 0 :(得分:0)

好吧,似乎@josefZ让我最接近答案,所以@josefZ如果你将我的答案剪切并粘贴到你自己,我会删除我的。 ; - )

这些是我一直在寻找的答案(我仍然希望有更多关于字体后备和字体与代码页关系的信息):

看来你无法获得U + 2691的原因是Font不支持它,而不是代码页问题(至少在我的情况下)。

显然有些程序有伪图的备份字体。

  • WebStorm未配置为执行此操作(我没有启用辅助字体),但它在内部执行此操作。

  • Visual Studio Code没有这个设置,但当我切换到Deja Vu Mono时,它显示正常。

具体来说,允许您在cmd.exe控制台中使用黑旗: 1.下载Deja Vu Mono字体。 2.解压缩并安装它(全选,右键单击,选择安装) 3.按照these instructions使其在cmd.exe中可用。 4.转到cmd.exe的首选项并选择字体。

替代品: 1.对Deja Vu Mono使用ConEmuset the pseudographics字体。 2.不要忘记手动设置unicode范围以包括所需的范围(2691,在这种情况下,但我将其设置为:Pseudographics: 2013-3000

希望这有帮助。