簡體   English   中英

從 golang 的網絡調用中讀取非 utf8 編碼的數據

[英]Reading non-utf8 encoded data from a network call in golang

我正在嘗試從 golang 中的 http 響應正文中讀取字節。 我的問題是響應正文是使用 ISO-8859-1 編碼的。 我想以相同的編碼讀取響應正文並將內容寫入 ISO-8859-1 編碼的文件中。

有沒有辦法使用我可以做到這一點? 我根本不想將數據轉換為 UTF-8。

將響應主體作為字節片讀取和寫入, []byte是一種不透明的數據類型。

是有關編碼的好讀物,您可能會從中受益。

您似乎假設 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接口,該接口允許您讀取原始字節並將它們流式傳輸到文件中。

一旦我們運行此代碼,這是file -i /tmp/latin1的輸出:

/tmp/latin1: text/html; charset=iso-8859-1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM