Http 从golang中的网络调用读取非utf8编码数据
我正在尝试从golang中的http响应体读取字节。我的问题是响应体是使用ISO-8859-1编码的。我希望以相同的编码读取响应正文,并以ISO-8859-1编码将内容写入文件Http 从golang中的网络调用读取非utf8编码数据,http,go,character-encoding,Http,Go,Character Encoding,我正在尝试从golang中的http响应体读取字节。我的问题是响应体是使用ISO-8859-1编码的。我希望以相同的编码读取响应正文,并以ISO-8859-1编码将内容写入文件 有没有一种方法可以让我做到这一点?我根本不想将数据转换为UTF-8。以字节片的形式读写响应体,[]字节,一种不透明的数据类型。是一种很好的编码读物,您可能会从中受益 您似乎假设Go在执行请求时对接收到的原始字节进行解码。事实并非如此 举个例子: package main import ( "io" "l
有没有一种方法可以让我做到这一点?我根本不想将数据转换为UTF-8。以字节片的形式读写响应体,
[]字节
,一种不透明的数据类型。是一种很好的编码读物,您可能会从中受益
您似乎假设Go在执行请求时对接收到的原始字节进行解码。事实并非如此
举个例子:
package main
import (
"io"
"log"
"net/http"
"os"
)
func main() {
// We perform a request to a Latin-1 encoded page
resp, err := http.Get("http://andrew.triumf.ca/multilingual/samples/german.meta.html")
if err != nil {
log.Fatalln(err)
}
//
f, err := os.Create("/tmp/latin1")
defer f.Close()
if err != nil {
log.Fatalln(err)
}
io.Copy(f, resp.Body)
}
在文档中,您可以看到resp.Body
符合io.ReadCloser
接口,该接口允许您读取原始字节并将其流式传输到文件中
一旦我们运行此代码,这就是文件-i/tmp/latin1
的输出:
/tmp/latin1: text/html; charset=iso-8859-1
Go中的任何内容都不会自动将字节转换为utf-8(或任何其他编码)。所以你什么都不用做。