gbk to utf-8
最近在写一个爬取小说网站的小爬虫工具,爬取的过程中发现爬取的网站编码并不是utf-8编而是gbk编码,上网差了点资料,发现网上一些推荐的库,我个人感觉设置的不是很符合Go的设计模式或者说功能太多了,于是上网查了点资料。
首先不了解gbk跟utf-8 是什么东西的请百度
首先go识别的编码就是utf-8,所以我只需要把gbk转换到utf-8编码即可。
func main() {
enc := simplifiedchinese.GB18030.NewEncoder()
encBuf := bytes.NewBuffer(make([]byte, 0))
writ := enc.Writer(encBuf)
writ.Write([]byte("这段内容是要被编码转换"))
fmt.Println("编码后的内容", encBuf.String())
dec := simplifiedchinese.GB18030.NewDecoder()
read := dec.Reader(encBuf)
decBuf, err := ioutil.ReadAll(read)
if err != nil {
log.Println(err)
}
fmt.Println("解码后的内容", string(decBuf))
}
simplifiedchinese
包下其实是有gbk的但是我用了GB18030,他是GBK的升级版本并且兼容GBK,省事,省心
关于怎么从http转码看下面
func main(){
resp, err := httplib.Get("https://www.biquge.com.tw/10_10686/9361073.html").DoRequest()
if err != nil {
panic(err)
}
reader := simplifiedchinese.GB18030.NewDecoder().Reader(resp.Body)
buf, err := ioutil.ReadAll(reader)
if err != nil {
panic(err)
}
fmt.Println(string(buf))
}
可以阅读网页源码查看他的网页编码
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
如果没有GB18030
解码器的存在那么你print后他中文就会乱码,可以自己手动试试