为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Windows 上的 Go (golang) 中打印 UTF-8(或 unicode)字符

如何在 Windows 上的 Go (golang) 中打印 UTF-8(或 unicode)字符

Go
翻阅古今 2023-04-24 17:03:40
让我们来看看这个:✓ Hello, 世界如您所见,有一个 unicode 复选标记和中文/日文字符。在 go 中,如果我使用 MSYS 或 linux 环境,我可以轻松打印这些字符。即使在窗户上。但是,我无法在CMD或 中看到它们Powershell。我懂了:电源外壳这是我非常基本的代码:package mainimport (    "fmt")func main() {    fmt.Println("✓ Hello, 世界")    // OR    fmt.Println("\u2713 Hello, 世界")}此外,我有许多控制台应用程序,它们能够使用 cmd 或 powershell 在我的窗口上显示此类字符。为什么去不了?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

Windows cmd 和 PowerShell 控制台的问题是 Consolas 和 Lucida Console 等字体中缺少 CJK 字符。在 Windows 10 上,将控制台字体更改为支持 CJK 字符的字体,例如 NSimSun 或 SimSun-ExtB。


例如,


font.go:


package main


import (

    "fmt"

)


func main() {

    fmt.Println("✓ Hello, 世界")

    // OR

    fmt.Println("\u2713 Hello, 世界")

}

输出(NSimSun):


Microsoft Windows [Version 10.0.17134.345]

>go version

go version devel +47cc59f31f Tue Oct 23 00:29:57 2018 +0000 windows/amd64

>go run font.go

✓ Hello, 世界

✓ Hello, 世界

>


查看完整回答
反对 回复 2023-04-24
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

尝试在Windows PowerShell ISE中运行。

它对显示 Unicode 有很好的支持。

CMD 和 PowerShell 不能很好地支持命令行 shell中的 Unicode 字体,因为它们并不是真正使用“字体”来显示文本,而是使用转换为字符的 ANSI/VT 代码页。因此,尽管 PowerShell 能够在内部支持 Unicode,并且您可以在对象和函数之间传递它们,但命令行 shell根本无法显示它们,因为代码页和显示之间的转换不存在。

Windows PowerShell ISE 不同于从命令行shell运行 PowerShell ,因为 ISE 显示输出并且不必使用 ANSI/VT 序列在 shell 和 PowerShell 控制台主机之间传递命令。而且它没有任何遗留脚本需要处理。


查看完整回答
反对 回复 2023-04-24
?
MM们

TA贡献1886条经验 获得超2个赞

使用Windows 终端。您可以在 Microsoft Store 上获得它。



查看完整回答
反对 回复 2023-04-24
  • 3 回答
  • 0 关注
  • 250 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信