比如用http.Get() 获取某个网页的编码是GBK, 但是go使用的是utf-8 , 这个时候就需要转换
func main() {
url := "xxx网站"
resp, err := http.Get(url)
if err != nil {
panic(err)
}
defer resp.Body.Close()
if resp.StatusCode != http.StatusOK {
fmt.Println("Error: status code", resp.StatusCode)
return
}
all, err := ioutil.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Printf("%s \n", all)
}
使用golang.org/x/text 包进行处理
// 将收到的GBK内容转换成utf-8
utf8Reader := transform.NewReader(resp.Body, simplifiedchinese.GBK.NewDecoder())
// 将对应格式文本转换成utf-8
func DecodeEncoding(r io.Reader) *transform.Reader {
e := determineEncodeing(r)
return transform.NewReader(r, e.NewDecoder())
}
// 判断传输来的文本的字符集格式是什么
func determineEncodeing(r io.Reader) encoding.Encoding {
peek, err := bufio.NewReader(r).Peek(1024)
if err != nil {
panic(err)
}
determineEncoding, _, _ := charset.DetermineEncoding(peek, "")
return determineEncoding
}