internal/coding/charsets.go
func NewCharsetReader(charset string, input io.Reader) (io.Reader, error) {
	if strings.ToLower(charset) == utf8 {
		return input, nil
	}
	csentry, ok := encodings[strings.ToLower(charset)]
	if !ok {
		return nil, fmt.Errorf("Unsupported charset %q", charset)
	}
	return transform.NewReader(input, csentry.e.NewDecoder()), nil
}
func NewCharsetReader(charset string, input io.Reader) (io.Reader, error) {
	if strings.ToLower(charset) == utf8 {
		return input, nil
	}
	csentry, ok := encodings[strings.ToLower(charset)]
	if !ok {
		return nil, fmt.Errorf("Unsupported charset %q", charset)
	}
	return transform.NewReader(input, csentry.e.NewDecoder()), nil
}
// NewCharsetReader generates charset-conversion readers, converting from the provided charset into
// UTF-8.  CharsetReader is a factory signature defined by Go's mime.WordDecoder.
//
// This function is similar to: https://godoc.org/golang.org/x/net/html/charset#NewReaderLabel