Windows 10 Bash 终端中的 UTF8 字符

Windows 10 Bash 终端中的 UTF8 字符

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

答案1

补充一下 Doctorj 的回答,有几种默认安装的字体可供您使用(在 Windows 10 bash shell 上)。

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

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

  • 哥特式女士
  • 模拟太阳
    • 似乎没有显示全部哈萨克语。
  • SimSun-ExtB (光栅字体) - 我的建议

MS Gothic 和 NSimSun

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

SumSun-ExtB (光栅字体):

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

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

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

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

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

  • 我尝试安装“Source Code Pro”,但它没有出现在我的字体中。
  • 我安装了 DejaVu Sans Mono,它适用于大多数语言,但对 CJK 根本不起作用。
  • 我安装了 Google 的 Noto 等宽字体,它可以工作,但不支持 CJK。此外,他们明确表示不支持 CJK 等宽字体。
  • 我安装了 Google 的 Inconsolata,但它不值得尝试。
  • 我安装了 GNU FreeFont (FreeMono),它可以工作,但不适用于 CJK。
  • 我放弃了并回到了 SimSun-ExtB。

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

答案2

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

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

答案3

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

答案4

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

您提供的信息不够。Unicode 提供了超过一百万个可能的字符,其中已定义超过 100,000 个。(其余的字符用于我们与外星人联系时,或者更可能是用于尚未编码的地球人的书写系统。)这些字符分为大约 150 种文字:拉丁文、西里尔文、阿拉伯文、中文……没有字体会为所有这些字符提供字形(字符图片)。(有一两种字体提供了一个带有代码点的框,但这不是您想要的。)

正如 grawity 两年前所说的那样,如果您得到的框中只有一个字符,那么您的应用程序已经显示的是 Unicode(可能是 Unicode 的 UTF-8 编码)。您缺少的是一种字体,它可以为您想要显示的任何脚本提供字形。如果您要显示俄语,您需要一种带有西里尔字符的字体;如果您想显示中文,那么您需要一种带有这些字符的字体。(大多数此类字体也会显示拉丁字符——我们用于英语的那种——但不一定很漂亮。)

所以我想问您:您要显示什么脚本?在我们知道之前,所有答案都只是猜测。

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

相关内容