因此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”
- 2 回答
- 0 关注
- 305 浏览
添加回答
举报
0/150
提交
取消