[移動]実際の言語の爬虫類GBKエンコーディングの問題プロセス

前の記事を共有する方法に文字列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で再現

おすすめ

転載: blog.csdn.net/weixin_34281477/article/details/91201443