前の記事を共有する方法に文字列GBK、UTF8エンコーディング変換、確かに非常に実用的。
しかし、私は記事GBKコーディングをクロールし、それがUTF8エンコードされた文字列に変換した後、html
インクルードは
なってきた聴
、効果は理想的ではない、どのようにそれを行うには?
グーグルはまだ向いているプログラミング(Baiduは私のニーズを満たすために失敗した)、偶然見たgolang.org/x/html
パッケージには以下があるcharset.NewReader(r io.Reader, contentType string)
コンテンツリーダー指定されたエンコーディングに変換することができます方法は、。
// NewReader returns an io.Reader that converts the content of r to UTF-8.
// It calls DetermineEncoding to find out what r's encoding is.
func NewReader(r io.Reader, contentType string) (io.Reader, error) {
preview := make([]byte, 1024)
n, err := io.ReadFull(r, preview)
switch {
case err == io.ErrUnexpectedEOF:
preview = preview[:n]
r = bytes.NewReader(preview)
case err != nil:
return nil, err
default:
r = io.MultiReader(bytes.NewReader(preview), r)
}
if e, _, _ := DetermineEncoding(preview, contentType); e != encoding.Nop {
r = transform.NewReader(r, e.NewDecoder())
}
return r, nil
}
緊急を解決するための方法は、私はUTF8エンコーディングに結果を返します、私を必要とし、コンテンツはファイルの内容を表示するにはクロール保存し、すべてが期待に沿ったものです。
サンプルコード:
r, _ := charset.NewReader(resp.Body, "UTF-8")
dom, err := goquery.NewDocumentFromReader(r)
if err != nil {
log.Errorln("New Dom error", err)
return ""
}
ます。https://www.jianshu.com/p/91bb5bae837aで再現