登录
首页 >  Golang >  Go问答

字符集字符串的编码和解码器

来源:stackoverflow

时间:2024-03-18 19:00:22 112浏览 收藏

Go 语言中存在内置函数或支持包函数,可根据输入字符集字符串(如 iso-8859-1 或 iso-8859-15)获取编码器或解码器。此前,开发人员需要自行匹配字符集,而现在可以通过 charset.Lookup(...) 函数直接查找并获取相应的编码器或解码器,简化了字符集处理过程。

问题内容

是否有内置函数或支持的包中的函数可以根据输入字符集字符串(例如 iso-8859-1iso-)获取 *golang.org/x/text/encoding.encoder (decoder) 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 + "\".")
}

解决方案


参见 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"

理论要掌握,实操不能落!以上关于《字符集字符串的编码和解码器》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>