http - ISO-8859-1 编码网站中的变音符号

标签 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.comcharset=iso-8859-1 编码时,我的输出是错误的。例如,变音符号显示不正确:

Hällo Wörld --> H?llo W?rld

正确显示变音符号的好的解决方案是什么?

最佳答案

您可以使用包 golang.org/x/net/html/charset确定网站的编码,并创建一个将内容转换为 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)
}

关于http - ISO-8859-1 编码网站中的变音符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39241563/

相关文章:

rest - 返回过期密码的良好 http 状态代码是什么?

java - 在几行java代码中读取url到字符串

regex - Regexp.FindAllStringSubmatch()中,第二个参数是做什么的?

linux - os.Mkdir 和 os.Mkdir 所有权限

http - 有人知道 vibe.d 在提供静态文件时是否支持 HTTP 字节范围吗?

spring - Java 嵌入式 jetty 正在接受 HTTP TRACE 方法

go - 链接到第一篇/最后一篇文章

r - 如何让 Windows 识别到 R 中的 "pt_br.utf-8"

Python:解析 Windows-1251 编码的 XML

mysql - 在 Rails 中使用变异元音作为数据库密码