Что-то вроде:
import "golang.org/x/text/encoding/charmap"
rdrBody := charmap.Windows1252.NewDecoder().Reader(resp.Body)
_, err = io.Copy(out, rdrBody)
rdrBody := charmap.ISO8859_1.NewDecoder().Reader(resp.Body)
_, err = io.Copy(out, rdrBody)
Есть много других ISO8859
кодировок в упаковке charmap
.
Простой пример пакета charmap.ISO8859_1
Использование:
package main
import (
"fmt"
"io"
"io/ioutil"
"net/http"
"strings"
"golang.org/x/text/encoding/charmap"
)
func main() {
resp, err := http.Get("http://example.com")
if err != nil {
fmt.Println(err)
return
}
defer resp.Body.Close()
rdrBody := io.Reader(resp.Body)
contentType := strings.ToLower(resp.Header.Get("Content-Type"))
if strings.Contains(contentType, "charset=iso-8859-1") {
rdrBody = charmap.ISO8859_1.NewDecoder().Reader(rdrBody)
}
body, err := ioutil.ReadAll(rdrBody)
if err != nil {
fmt.Println(err)
return
}
n := 256
if n > len(body) {
n = len(body)
}
fmt.Println(string(body[:n]))
}