他によい方法がある気がするのですが...わからないので、書いてみました。
URL から、その charset を取得する。
main.go
package main
import (
"fmt"
"net/http"
"regexp"
"github.com/PuerkitoBio/goquery"
)
func getCharset(url string) (charset string) {
res, err := http.Get(url)
if err != nil {
// handle error
}
defer res.Body.Close()
doc, _ := goquery.NewDocument(url)
doc.Find("meta").Each(func(_ int, s *goquery.Selection) {
// <meta charset="utf-8"> の場合
charsetAttr, _ := s.Attr("charset")
if charsetAttr != "" {
charset = charsetAttr
}
// <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> の場合
httpEquiv, _ := s.Attr("http-equiv")
if httpEquiv == "Content-Type" {
content, _ := s.Attr("content")
rep := regexp.MustCompile(`.*charset=(.+)`)
charsetStr := rep.ReplaceAllString(content, "$1")
if charsetStr != "" {
charset = charsetStr
}
}
})
return charset
}
func main() {
url := "https://qiita.com/trend"
a := getCharset(url)
fmt.Printf("%v", a)
}
$ go run main.go
UTF-8%