Ai
1 Star 0 Fork 0

k3x/go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
cahrset.go 856 Bytes
一键复制 编辑 原始数据 按行查看 历史
k3x 提交于 2022-01-06 01:16 +08:00 . browsers
package urlx
import (
"io"
"log"
"mime"
"net/http"
"strings"
"golang.org/x/text/encoding/htmlindex"
"golang.org/x/text/encoding/unicode"
"golang.org/x/text/transform"
)
func CharsetDecode(next Process) Process {
return func(resp *http.Response, body io.ReadCloser) error {
defer body.Close()
var r io.Reader = body
mimeType, params, _ := mime.ParseMediaType(resp.Header.Get(HeaderContentType))
if strings.HasPrefix(mimeType, "text/") && len(params) > 0 {
if charset := strings.TrimSpace(params["charset"]); charset != "" {
codec, err := htmlindex.Get(charset)
if err != nil {
log.Printf("not support charset: %s", charset)
} else if codec != unicode.UTF8 {
r = transform.NewReader(r, codec.NewDecoder())
resp.Header.Set(HeaderContentType, mimeType)
}
}
}
return next(resp, io.NopCloser(r))
}
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/k3x/go.git
git@gitee.com:k3x/go.git
k3x
go
go
82f96e922e7b

搜索帮助