首页 > Web开发 > 详细

Golang html encoding解析

时间:2018-07-28 14:28:33      阅读:491      评论:0      收藏:0      [点我收藏+]

自动解析html页面的编码格式:

需要依赖 golang.org/x/text 和 golang.org/x/net 这两个外部库

package main

import (
    "net/http"
    "io/ioutil"
    "fmt"
    "golang.org/x/text/transform"
    "io"
    "golang.org/x/text/encoding"
    "bufio"
    "golang.org/x/net/html/charset"
)

// encoding determine for html page , eg: gbk gb2312 GB18030
func determineEncoding(r io.Reader) encoding.Encoding {
    bytes, err := bufio.NewReader(r).Peek(1024)
    if err != nil {
        panic(err)
    }
    e, _, _ := charset.DetermineEncoding(bytes, "")
    return e
}

func main() {
    resp, err := http.Get("http://www.zhenai.com/zhenghun")
    if err != nil {
        panic(err)
    }
    defer resp.Body.Close()

    e := determineEncoding(resp.Body)
    reader := transform.NewReader(resp.Body, e.NewDecoder())
    if resp.StatusCode == http.StatusOK {
        bodyBytes, err := ioutil.ReadAll(reader)
        if err != nil {
            panic(err)
        }
        fmt.Printf("%s\n", bodyBytes)
    }
}

 

Golang html encoding解析

原文:https://www.cnblogs.com/vincenshen/p/9381810.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!