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

golang:为什么终端stdout不打印出utf-8字符?

golang:为什么终端stdout不打印出utf-8字符?

Go
喵喔喔 2021-05-14 22:05:36
因此golang被设计为正确处理unicode / utf-8。但是,我似乎无法在终端的标准输出中正确打印出utf-8字符。最简单的程序在这里:package mainimport "fmt"func main() {    fmt.Println("Hello, 世界")}执行时,显示编码的字符。$ go run hello.goHello, ‰∏ñÁïå我的终端的语言环境设置正确:$ localeLANG="en_US.UTF-8"LC_COLLATE="en_US.UTF-8"LC_CTYPE="en_US.UTF-8"LC_MESSAGES="en_US.UTF-8"LC_MONETARY="en_US.UTF-8"LC_NUMERIC="en_US.UTF-8"LC_TIME="en_US.UTF-8"LC_ALL="en_US.UTF-8"我正在使用vimset encoding=utf-8并将其set fileencodings=utf-8包含在我的.vimrc文件中。这实际上可能是一个vim问题。我曾经nano从头开始编写此脚本并命名,hello2.go然后打印输出实际上可以Hello, 世界正确打印。但是用hello.go创建的原始脚本vim只会给我带来混乱Hello, ‰∏ñÁïå。因此,只需仔细检查一下我的vim创建的hello.go脚本是否为UTF-8 Unicode文本,即可file在其上运行命令。像这样:-$ file hello.gohello.go: C source, UTF-8 Unicode text那有什么呢?为什么我hello.go上面的vim创建的脚本打印出乱码,而我的nano创建的hello2.go(包含相同的确切代码行)却不打印出来?$ file hello2.gohello2.go: C source, UTF-8 Unicode text实际上,当我打开用创建的vim-createhello.go时nano,源代码现在显示为:package mainimport "fmt"func main() {        fmt.Println("Hello ‰∏ñÁïå")}但是,如果我打开同一个VIM创建hello.go有vim,源代码如下: -package mainimport "fmt"func main() {    fmt.Println("Hello, 世界")}为什么会这样呢?
查看完整描述

2 回答

?
万千封印

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

该问题最有可能与Windows“命令提示符”(控制台)工具属性中使用的字体有关。

单击左上角的菜单图标,选择“属性”,然后选择“字体”选项卡。在Windows 8.1机器上,默认值为“光栅字体”,并且出现问号????? 而不是Unicode字符,而是通过Go Lang程序中的UTF8进行编码。

解决方案是选择TrueType字体之一“ Consolas”或“ Lucida Console”


查看完整回答
反对 回复 2021-05-31
  • 2 回答
  • 0 关注
  • 305 浏览
慕课专栏
更多

添加回答

举报

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