Golang GBK To Utf-8

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后他中文就会乱码,可以自己手动试试

猜你喜欢

转载自blog.csdn.net/a99361481/article/details/83273053