Golang GBK To Utf-8
阿新 • • 發佈:2018-11-08
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後他中文就會亂碼,可以自己手動試試