1. 程式人生 > >Golang GBK To Utf-8

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後他中文就會亂碼,可以自己手動試試