无效的UTF-8起始字节0x8b(在字符#2,字节#-1)

时间:2016-12-17 21:10:06

标签: java apache-abdera

我正在尝试解析网址' http://self-learning-java-tutorial.blogspot.in/atom.xml'中的原子文档。在解析文档时,我收到错误'无效的UTF-8起始字节0x8b(在字符#2,字节#-1)'。

Abdera abdera = new Abdera();
        Parser parser = abdera.getParser();

        URL url = new URL("http://self-learning-java-tutorial.blogspot.in/atom.xml");

        Document<Feed> doc = parser.parse(url.openStream(), url.toString());
        Feed feed = doc.getRoot();
        System.out.println(feed.getTitle());
        for (Entry entry : feed.getEntries()) {
            System.out.println("\t" + entry.getTitle());
        }
        System.out.println(feed.getAuthor());

任何人都可以帮助我,这个错误是什么以及如何解决这个错误?

1 个答案:

答案 0 :(得分:1)

来自此URL的响应是GZIP压缩的(你的系统中必须有一些特殊的东西,就像在标准的java 8中一样,默认情况下它不会发送accept gzip,对我来说你的代码工作得很好)。

要处理此问题,您只需解压缩流即可。请注意,对于其他URL,您可能需要在响应未压缩时处理该案例。另外,不要忘记关闭您打开的资源/流。

以下是您网址的工作示例

const getData = (fileName, type) =>
  new Promise((resolve, reject) =>
    fs.readFile(fileName, type, (err, data) => {
      //if has error reject, otherwise resolve
      return err ? reject(err) : resolve(data);
    })
  );

getData('./file.txt', 'utf8')
  .then(data => console.log('Data: ', data))
  .catch(error => console.log('Error: ', error));