因此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-created hello.go
withnano
时,源代码现在显示为:-
package main
import "fmt"
func main() {
fmt.Println("Hello 世界")
}
但是如果我打开同一个 vim-created hello.go
with vim
,源代码如下:-
package main
import "fmt"
func main() {
fmt.Println("Hello, 世界")
}
为什么会这样?