その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"
私はvimを使用しており、ファイルset 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
それで、何が得られますか?上記のvimで作成されたhello.goスクリプトは意味不明な出力をするのに、nanoで作成されたものhello2.go(まったく同じコード行を含む)は出力されないのはなぜですか?
$ file hello2.go
hello2.go: C source, UTF-8 Unicode text
実際、vim-created hello.gowithを開くとnano、ソースコードは次のようになります。
package main
import "fmt"
func main() {
        fmt.Println("Hello 世界")
}
しかし、同じ vim で作成されたものを開くhello.goとvim、ソース コードは次のようになります。
package main
import "fmt"
func main() {
    fmt.Println("Hello, 世界")
}
これはなぜですか?