Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http 从golang中的网络调用读取非utf8编码数据_Http_Go_Character Encoding - Fatal编程技术网

Http 从golang中的网络调用读取非utf8编码数据

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

我正在尝试从golang中的http响应体读取字节。我的问题是响应体是使用ISO-8859-1编码的。我希望以相同的编码读取响应正文,并以ISO-8859-1编码将内容写入文件


有没有一种方法可以让我做到这一点?我根本不想将数据转换为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(或任何其他编码)。所以你什么都不用做。