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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值