package encodingimport ("strings""unicode/utf8""github.com/saintfish/chardet")func DetectCharset(content []byte) (string, error) {detector := chardet.NewTextDetector()result, err := detector.DetectBest(content)if err != nil {return "", err}return strings.ToUpper(result.Charset), nil}func ToUTF8(content string) []byte {b := make([]byte, len(content))i := 0for _, r := range content {i += utf8.EncodeRune(b[i:], r)}return b[:i]}// func ToUTF8(content []byte, ignoreInvalidITF8Chars ...bool) (string, error) {// ignore := false// if len(ignoreInvalidITF8Chars) > 0 {// ignore = ignoreInvalidITF8Chars[0]// }// cs, err := DetectCharset(content)// if err != nil {// if !ignore {// return "", err// }// cs = "UTF-8"// }// bs := string(content)// if ignore {// if !utf8.ValidString(bs) {// v := make([]rune, 0, len(bs))// for i, r := range bs {// if r == utf8.RuneError {// _, size := utf8.DecodeRuneInString(bs[i:])// if size == 1 {// continue// }// }// v = append(v, r)// }// bs = string(v)// }// }// if cs == "UTF-8" {// return bs, nil// }// converter, err := iconv.NewConverter(cs, "UTF-8")// if err != nil {// err = errors.New("Failed to convert " + cs + " to UTF-8: " + err.Error())// return bs, err// }// return converter.ConvertString(bs)// }
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。