我在旅途中下面的代码:
import (
"log"
"net/http"
"code.google.com/p/go.text/transform"
"code.google.com/p/go.text/encoding/charmap"
)
...
res, err := http.Get(url)
if err != nil {
log.Println("Cannot read", url);
log.Println(err);
continue
}
defer res.Body.Close()
我加载该页面包含非UTF-8符号。 所以,我尝试使用transform
utfBody := transform.NewReader(res.Body, charmap.Windows1251.NewDecoder())
但问题是,它甚至在这个简单的scenarion返回错误:
bytes, err := ioutil.ReadAll(utfBody)
log.Println(err)
if err == nil {
log.Println(bytes)
}
transform: short destination buffer
它也实际上是设置bytes
一些数据,但在我真正的代码,我使用goquery
:
doc, err := goquery.NewDocumentFromReader(utfBody)
它认为错误和失败,并在返回的数据不
我试图通过的“块” res.Body
到transform.NewReader
和figuried出来,只要res.Body不包含非UTF8数据效果很好。 而当它包含非UTF8字节的失败与上述错误。
我是很新的去,真的不明白这是怎么回事,如何解决这个问题