go 其它编码转UTF8编码

Wesley13
• 阅读 694

需要安装两个包:

gopm get -g -v golang.org/x/text

gopm get -g -v golang.org/x/net/html

package fetcher

import ( "bufio" "golang.org/x/net/html/charset" "golang.org/x/text/encoding" "golang.org/x/text/encoding/unicode" "golang.org/x/text/transform" "io/ioutil" "net/http" "src/github.com/gpmgo/gopm/modules/log" )

func Fetch(url string) ([]byte, error) { resp, err := http.Get(url) defer resp.Body.Close() if err != nil { return nil, err }

reader := bufio.NewReader(resp.Body) e := determineEncoding(reader) utf8Reader := transform.NewReader(reader, e.NewDecoder())

body, err := ioutil.ReadAll(utf8Reader) if err != nil { panic(err) }

return body, nil }

func determineEncoding(r *bufio.Reader) encoding.Encoding { b, err := r.Peek(1024) if err != nil { log.Error("get code error") return unicode.UTF8 } e, _, _ := charset.DetermineEncoding(b, "") return e }

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
happlyfox happlyfox
2年前
go get下载包失败问题
关于我由于某些不可抗力的原因,国内使用goget命令安装包时会经常会出现timeout的问题。本文介绍几个常用的解决办法。从github克隆golang在github上建立了一个镜像库,如https://github.com/golang/net就对应是https://golang.org/x/net的镜像库。要下载golang.org/x/net包
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3年前
golang 不翻墙安装golang.org/x/net
下载安装golang.org/x/net其实网上有很多的文章,但总的归来是有两种:方法一:为了使包的导入方式不变,我们需要在src目录下面构造目录结构$mkdirp$GOPATH/src/golang.org/x/$cd$GOPATH/src/golang.org/x/$gitclonehttps://git
Wesley13 Wesley13
2年前
FLV文件格式
1.        FLV文件对齐方式FLV文件以大端对齐方式存放多字节整型。如存放数字无符号16位的数字300(0x012C),那么在FLV文件中存放的顺序是:|0x01|0x2C|。如果是无符号32位数字300(0x0000012C),那么在FLV文件中的存放顺序是:|0x00|0x00|0x00|0x01|0x2C。2.  
Stella981 Stella981
2年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Stella981 Stella981
2年前
SpringBoot使用RedisTemplate操作Redis时,key值出现 -xac-xed-x00-x05t-x00-tb
原因分析原因与RedisTemplate源码中的默认序列化方式有关defaultSerializernewJdkSerializationRedisSerializer(classLoader!null?classLoader:this.getClass().getClassLoader()
Easter79 Easter79
2年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Easter79 Easter79
2年前
TiDB 点滴
TiDBMake时报错:packagegolang.org/x/text/encoding:unrecognizedimportpath"golang.org/x/text/encoding"packagegolang.org/x/tools/go/gcimporter:unrecognizedimportpath"golang
Easter79 Easter79
2年前
SpringBoot使用RedisTemplate操作Redis时,key值出现 -xac-xed-x00-x05t-x00-tb
原因分析原因与RedisTemplate源码中的默认序列化方式有关defaultSerializernewJdkSerializationRedisSerializer(classLoader!null?classLoader:this.getClass().getClassLoader()