做网站采集的时候见到gb2312这种编码的页面总会很无语。为什么现在还有用gb2312来显示内容的网站,utf-8不是早就统治世界了吗?好在已有成熟的现成解决方案了,我就做一回伸手党吧。
为了验证确实把gb2312代码转为了utf-8,所以这里先生成一个gb2312内容的文件:
curl http://www.shanghai.gov.cn/nw2/nw2314/nw2315/nw4411/index.html>sh.txt
需要安装 golang.org/x/text 这个库,不过我没有翻墙工具,所以我从github上下载代码,并放到src/golang.org/x/text 目录。
go get github.com/golang/text
以下是调试代码,第一次输出的内容中文部分是乱码,延迟3秒输出转换之后的正确内容。
package main
import (
"bytes"
"golang.org/x/text/encoding/simplifiedchinese"
"golang.org/x/text/transform"
"io/ioutil"
"fmt"
"time"
)
func main(){
gbkcodes,\_ := ioutil.ReadFile("sh.txt")
fmt.Println(string(gbkcodes))
fmt.Println("直接转string会乱码↑↑↑↑,稍等3秒见证奇迹。。")
time.Sleep(3e9)
t := transform.NewReader(bytes.NewReader(gbkcodes), simplifiedchinese.GBK.NewDecoder())
utf8codes,\_ := ioutil.ReadAll(t)
fmt.Println(string(utf8codes))
}
相关文档
暂无
随便看看
畅言模块加载中