Windows 10 bash终端中的UTF8字符


36

我已经在Windows 10上安装了新的bash shell。我将它与ZSH一起使用。但是,utf8字符都不起作用,它们显示为方形块。如何在外壳中默认启用utf8字符编码?那可能吗?


5
如果每个字符都显示为一个方块,那么UTF-8已经可以使用;它是缺少Unicode支持的字体。
grawity '16

用于chcp 65001将代码页更改为UTF-8并将字体更改为Consolas
phuclv

我切换到SimSun-Ext B字体,所有字符均正确显示。
Ryan Foley

5
@grawity我正在使用uubntu mono,现在切换到consolas。我得到的是一个没有问号的正方形框,而不是一个空的正方形框。我也尝试了chcp建议,但在检查属性时已将其设置为UTF-8编码。
Ortix92'8

2
我想指出,这个问题仍然没有解决,而且我仍然无法使用ZSH正确显示utf8 Unicode字符
Ortix92 '17

Answers:


12

右键单击bash窗口顶部的标题栏,选择条目属性。在打开的窗口中是一个选项卡,您可以在其中更改字体。我将字体更改为“ Source Pro”,大小为14。

看起来不错,所有utf-8字符都可以使用。


那是真正的答案。您可以选择任何支持UTF8的字体。我安装了Menlo,然后忘记在bash选项中进行更改,说实话甚至没有考虑过。
StalkAlex

请注意,我已经尝试了Windows中的所有默认选项(包括Source Pro),并且选中标记字符(✔)仅对@ user3599934建议的“ DejaVu Sans Mono”字体有效!
塞夫隆

10

为了增加Doctorj的答案,默认情况下可以使用几种字体(在Windows 10 bash shell上)。

经过测试的语言:保加利亚语,乌克兰语,简体中文,繁体中文,丹麦语,法语,德语,意大利语,日语,哈萨克语,韩语,马其顿语,蒙古语,挪威语,波兰语,葡萄牙语,俄语,塞尔维亚语,西班牙语,瑞典语。

以下默认字体显示所有观察到的字符:

  • MS哥特式
  • 太阳报
    • 似乎未显示全部的哈萨克斯坦。
  • SimSun-ExtB(光栅字体)-我的建议

MS Gothic和NSimSun

  • 隔开非拉丁非CJK(中文,日文,韩文)语言(马其顿语,哈萨克语,保加利亚语)。
  • 重音拉丁字符(á,é)的垂直偏移为奇数。
  • 没有显示至少一个马其顿字符。

SumSun-ExtB(光栅字体):

  • 有一条警告消息说,光栅字体可能无法正常显示。
  • 大多数字符显示较暗(可能是屏幕亮度低的问题)。
  • 与ASCII字符相比,非ASCII字符较亮(可能的解决方案,使用粗体选项)。
  • 所有语言的字符都靠在一起(更容易看到单词之间的间距)。
  • 对于非拉丁语非CJK语言,似乎更可靠。

对于命令提示符和PowerShell,使用这些字体中的任何一种,当您单击非ASCII字符时,都会发生怪异的事情,尽管当您突出显示文本时,它会恢复正常。

要安装字体:请注意,您需要更改所用Windows Shell的字体,例如命令提示符或PowerShell,而不是Linux通过bash的方式。此链接描述了可以在命令提示符上使用的字体(等宽字体,以及如何为命令提示符安装和选择字体):将字体添加到命令提示符

  • 调出注册表编辑器(运行“ regedit”)
  • 查找文件夹HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Console \ TrueTypeFont
  • 右键单击(或编辑)->新建->字符串值
  • 用比最后一个多0的字体命名字体(例如“ 000”)。
  • 右键单击该条目,然后选择“修改...”
  • 输入字体或OTF文件的名称(不带.otf)。

有关在Windows上通过命令行安装字体的信息,请参阅此问题和解答。

  • 我尝试安装“源代码专业版”,但它没有出现在我的字体中。
  • 我安装了DejaVu Sans Mono,它适用于大多数语言,但不适用于CJK。
  • 我安装了Google的Noto等宽字体,它可以工作,但不适用于CJK。另外,他们特别说他们不支持CJK。
  • 我安装了Google的Inconsolata,不值得尝试。
  • 我安装了GNU FreeFont(FreeMono),它可以工作,但不适用于CJK。
  • 我放弃了,回到SimSun-ExtB。

(注意:我没有足够的声誉来发布链接)。


6

您可以尝试DejaVu Sans Mono-它对我有用。


11
尽管这可能是OP的问题的解决方案,但它不是高质量的答案,而是提示。可以通过以下说明进行改进:1)如何为Windows 10 Bash终端更改字体;2)如何安装所说的字体(除非默认情况下在每个Windows 10中都使用–我在Linux上,我不知道)。
卡米尔Maciorowski

1
我以前使用过Ubuntu Mono,但遇到了问题。DejaVu Sans Mono解决了该问题。
smonff

0

这实际上是评论而不是答案,但是由于SE不允许我发表评论...

您没有提供足够的信息。Unicode提供了超过一百万个可能的字符,其中已经定义了十万多个。(其余的用于当我们联系外星人时,或者更可能是针对尚未编码的地球人的书写系统。)它们被划分为大约150种脚本:拉丁文,西里尔文,阿拉伯文,中文...没有字体为所有这些字符提供字形(字符的图片)。(有一两个提供一个带有代码点的盒子,但这不是您想要的。)

就像两年前的话说的那样,如果您得到一个希望有单个字符的框,则您的应用程序已经在显示Unicode(大概是Unicode的UTF-8编码)。您缺少的是一种字体,它可以为要显示的任何脚本提供字形。如果要显示俄语,则需要一种带有西里尔字母的字体;如果要显示中文,则需要带有这些字符的字体。(大多数此类字体还将显示拉丁字符(我们用于英语的那种字符,但不一定漂亮)。

所以我的问题是:您要显示什么脚本?直到我们知道,所有答案都是猜测。

顺便说一句,有些脚本非常复杂,即使您的字体正确,也只有一些程序可以正确显示它们。其中包括缅甸语,一些印度文字(例如Devanagari)和阿拉伯语(从右到左书写,并且其字符应根据相邻字符显示不同)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.