Cats萌萌
请记住,ISO-8859-1与 Unicode 相比,它只支持一小部分字符。如果您确定您的UTF-8编码字符串仅包含 覆盖的字符ISO-8859-1,则可以使用以下代码。package mainimport ( "fmt" "golang.org/x/text/encoding/charmap")func main() { str := "Räv" encoder := charmap.ISO8859_1.NewEncoder() out, err := encoder.Bytes([]byte(str)) if err != nil { panic(err) } fmt.Printf("%x\n", out)}以上打印:52e476所以0x52, 0xE4, 0x76, 根据https://en.wikipedia.org/wiki/ISO/IEC_8859-1看起来是正确的——特别是第二个字符值得注意,因为它将被编码为0xC3, 0xA4in UTF-8。如果字符串包含不受支持的字符,例如我们更改str为 be "Räv💩v",则将返回错误encoder.Bytes([]byte(str)):panic: encoding: rune not supported by encoding.goroutine 1 [running]:main.main()/Users/nj/Dev/scratch/main.go:15 +0x109如果您希望通过接受不可转换字符的丢失来解决这个问题,一个简单的解决方案可能是利用EncodeRune,它返回一个布尔值以指示符文是否在 charmap 的曲目中。package mainimport ( "fmt" "golang.org/x/text/encoding/charmap")func main() { str := "Räv💩v" out := make([]byte, 0) for _, r := range str { if e, ok := charmap.ISO8859_1.EncodeRune(r); ok { out = append(out, e) } } fmt.Printf("%x\n", out)}以上打印52e47676即表情符号已被剥离。