1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
package chardet import ( "bytes" "io" "golang.org/x/net/html/charset" ) func DetectAndDecode(r io.Reader) (*bytes.Reader, error) { decoded, err := charset.NewReader(r, "text/html") if err != nil { return nil, err } buf := new(bytes.Buffer) _, err = io.Copy(buf, decoded) if err != nil { return nil, err } return bytes.NewReader(buf.Bytes()), nil }