我在 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 编码)。您缺少的是一种字体,它可以为您想要显示的任何脚本提供字形。如果您要显示俄语,您需要一种带有西里尔字符的字体;如果您想显示中文,那么您需要一种带有这些字符的字体。(大多数此类字体也会显示拉丁字符——我们用于英语的那种——但不一定很漂亮。)
所以我想问您:您要显示什么脚本?在我们知道之前,所有答案都只是猜测。
顺便说一句,有些文字非常复杂,即使您有正确的字体,也只有一些程序可以正确显示它们。其中包括缅甸文、一些印度文(例如梵文)和阿拉伯文(从右到左书写,并且根据相邻字符的不同,某些字符的显示方式也不同)。