因此golang被设计为正确处理unicode / utf-8。
但是,我似乎无法在终端的标准输出中正确打印出utf-8字符。
最简单的程序在这里:
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
执行时,显示编码的字符。
$ go run hello.go
Hello, 世界
我的终端的语言环境设置正确:
$ locale
LANG="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.go
hello.go: C source, UTF-8 Unicode text
那有什么呢?为什么我hello.go上面的vim创建的脚本打印出乱码,而我的nano创建的hello2.go(包含相同的确切代码行)却不打印出来?
$ file hello2.go
hello2.go: C source, UTF-8 Unicode text
实际上,当我打开用创建的vim-createhello.go时nano,源代码现在显示为:
package main
import "fmt"
func main() {
fmt.Println("Hello 世界")
}
但是,如果我打开同一个VIM创建hello.go有vim,源代码如下: -
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
为什么会这样呢?
万千封印
相关分类