您可以使用编码包,其中包括通过包支持 Windows-1256 golang.org/x/text/encoding/charmap(在下面的示例中,导入此包并使用charmap.Windows1256代替japanese.ShiftJIS)。


这是一个简短的示例,它将日语 UTF-8 字符串编码为 ShiftJIS 编码,然后将 ShiftJIS 字符串解码回 UTF-8。不幸的是,它在操场上不起作用,因为操场没有“x”包。


package main


import (

    "bytes"

    "fmt"

    "io/ioutil"

    "strings"


    "golang.org/x/text/encoding/japanese"

    "golang.org/x/text/transform"

)


func main() {

    // the string we want to transform

    s := "今日は"

    fmt.Println(s)


    // --- Encoding: convert s from UTF-8 to ShiftJIS 

    // declare a bytes.Buffer b and an encoder which will write into this buffer

    var b bytes.Buffer

    wInUTF8 := transform.NewWriter(&b, japanese.ShiftJIS.NewEncoder())

    // encode our string

    wInUTF8.Write([]byte(s))

    wInUTF8.Close()

    // print the encoded bytes

    fmt.Printf("%#v\n", b)

    encS := b.String()

    fmt.Println(encS)


    // --- Decoding: convert encS from ShiftJIS to UTF8

    // declare a decoder which reads from the string we have just encoded

    rInUTF8 := transform.NewReader(strings.NewReader(encS), japanese.ShiftJIS.NewDecoder())

    // decode our string

    decBytes, _ := ioutil.ReadAll(rInUTF8)

    decS := string(decBytes)

    fmt.Println(decS)

}

日本 StackOverflow 站点上有一个更完整的示例。文字是日文,但代码应该是不言自明的