Http ISO-8859-1编码网站中的Umlauts

Http ISO-8859-1编码网站中的Umlauts,http,go,encoding,Http,Go,Encoding,我的非常简单的代码片段: import "net/http" import "io" import "os" func main() { resp, err := http.Get("http://example.com") if err == nil { io.Copy(os.Stdout, resp.Body) } } 当example.com编码为charset=iso-8859-1时,我的输出有故障。例如,UMLAUT未正确显示: Hällowörld-->H?l

我的非常简单的代码片段:

import "net/http"
import "io"
import "os"

func main() {
  resp, err := http.Get("http://example.com")
  if err == nil {
    io.Copy(os.Stdout, resp.Body)
  }
}
example.com
编码为
charset=iso-8859-1
时,我的输出有故障。例如,UMLAUT未正确显示:

Hällowörld-->H?llow?rld

正确显示umlauts的好方法是什么?

您可以使用该软件包确定网站的编码,还可以创建一个阅读器,将内容转换为UTF-8

下面是一个工作示例:

package main

import (
    "io"
    "net/http"
    "os"

    "golang.org/x/net/html/charset"
)

func main() {
    resp, err := http.Get("http://example.com")
    if err != nil {
        os.Exit(1)
    }

    r, err := charset.NewReader(resp.Body, resp.Header.Get("Content-Type"))
    if err != nil {
        os.Exit(1)
    }

    io.Copy(os.Stdout, r)
}
您可以使用该包来确定网站的编码,还可以创建一个将内容转换为UTF-8的阅读器

下面是一个工作示例:

package main

import (
    "io"
    "net/http"
    "os"

    "golang.org/x/net/html/charset"
)

func main() {
    resp, err := http.Get("http://example.com")
    if err != nil {
        os.Exit(1)
    }

    r, err := charset.NewReader(resp.Body, resp.Header.Get("Content-Type"))
    if err != nil {
        os.Exit(1)
    }

    io.Copy(os.Stdout, r)
}

可能是相关的。或者将您的终端设置为iso-8859-1:-)可能是相关的。或者将您的终端设置为iso-8859-1:-)效果非常好!感谢您提供详细的代码片段!工作起来很有魅力!感谢您提供详细的代码片段!