beego中gbk和utf8编码转换问题

2014-12-10 18:54 来源:www.chinab4c.com 作者:golang专家

    beego中gbk和utf8编码转换问题,这个问题非常重要,有时候从gbk采集过来转成utf8也非常重要。

func Get_cate_urls(url string) (map[int]string , error) {
    urls :=make(map[int]string)
    if len(url) == 0 {
        return urls,errors.New("请输入要采集的url")
    }
    res,err := http.Get(url)
    if err !=nil {
        return urls,err
    }
    body ,err := ioutil.ReadAll(res.Body)
    if (err !=nil) {
        return urls,err
    }
    body = body[1024:1024*2]
    html := string(body)
    enc   := mahonia.FallbackDecoder(mahonia.NewDecoder("utf8"), mahonia.NewDecoder("ISO-8859-1"))
     strr := enc.ConvertString(html)
    dd:=mahonia.NewDecoder("gbk")
    str := dd.ConvertString(html)
    regex,_  := regexp.Compile("<span\\s*id=\"thread_\\d+\"><a href=\"(.*?)\"")
    urlall := regex.FindAllStringSubmatch(enc.ConvertString(strr),-1)
    for i ,v := range urlall {
        urls[i] = v[1]
    }
    res.Body.Close()
    return urls,nil
}

以上我们提供了2种解决方案,来解决该golang采集中编码的问题,这个是我在beego中采集的解决办法

来源:http://www.chinab4c.com