[英]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.