读取响应正文(Golang)时,将unicode字符作为字符串获取



我正在抓取一个用波兰语写的网站,这意味着它包含罗兹和É等字符。

当我尝试解析html时,无论是使用html包,还是通过拆分响应体的字符串,我都会得到这样的输出:

���~♦�♀�����r�▬֭��↔��q���y���<p��19��lFۯ☻→Z�7��

我目前正在使用

bodyBytes, err := ioutil.Readall(resp.body)
if err != nil {
//handle
} 
bodyString := string(bodyBytes)

为了获得字符串

如何获得可读格式的文本?

更新:

由于响应的内容编码是gzip,下面的代码将响应作为可打印字符串

gReader, err := gzip.NewReader(resp.Body)
if err != nil {
return err
}
gBytes, err := ioutil.ReadAll(gReader)
if err != nil {
return err
}
gReader.Close()
bodyStr := string(gBytes)

在维奇网站上你在工作吗?当我在维基百科页面上测试时,我得到了正确的字符

package main
import (
"fmt"
"io"
"net/http"
)
func main() {
resp, err := http.Get("https://en.wikipedia.org/wiki/Polish_alphabet")
if err != nil {
// handle error
}
defer resp.Body.Close()
b, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
bodyStr := string(b)
fmt.Println(bodyStr)
}
<td>Ą</td>
<td>Ć</td>
<td>Ę</td>

最新更新