获取charset字符串的编码器/解码器

问题描述 投票:2回答:1

是否有一个函数内置或支持包来获得基于输入字符串字符串的*golang.org/x/text/encoding.EncoderDecoder),如ISO-8859-1ISO-8859-15?现在,我认为这样做的唯一方法就是自己匹配:

func getEncoderForCharset(charset string) *encoding.Encoder {
    switch charset {
    case "ISO-8859-1":
        return charmap.ISO8859_1.NewEncoder()
    case "ISO-8859-15":
        return charmap.ISO8859_15.NewEncoder()
        // etc.
    }
    panic("Unknown charset \"" + charset + "\".")
}
go character-encoding
1个回答
1
投票

参见charset.Lookup(...),它返回一个encoding.Encoding,你可以从中调用NewEncoder()NewDecoder(),例如:

ss := []string{"ISO-8859-1", "ISO-8859-15", "bogus"}

for _, s := range ss {
    encoding, name := charset.Lookup(s)
    if encoding != nil {
        fmt.Printf("OK: encoding=%v, name=%q\n", encoding, name)
        // encoder := encoding.NewEncoder()
        // decoder := encoding.NewDecoder()
    }
}
// OK: encoding=&{Windows 1252}, name="windows-1252"
// OK: encoding=&{ISO 8859-15}, name="iso-8859-15"
© www.soinside.com 2019 - 2024. All rights reserved.