R 错误:1:输入的 UTF-8 不正确,指示编码!XMLtoList.



这是我的代码,我有一个在 UTF8 中转换的查询,但最后我收到一个错误,该查询不是 UTF8 我无法修复它:

library("XML")
library("methods")
library("httr")
query = http://export.arxiv.org/api/query?search_query=(au:( "Benoit Bertrand"))&start=0&max_results=2000
xml_data = xmlToList(iconv(URLencode(query),to="UTF-8"))

错误:1:输入的 UTF-8 不正确,指示编码!
字节: 0xC9 0x70 0x69 0x6A

我发现这是导致代码崩溃的空格字符,但这就是我得到的全部

由于拼写错误,问题的代码无法编译。即使修复了这些错误,代码也不会做一些有用的事情 -xmlToList应用于URL,而不是 GET 请求的结果。这足以生成错误:

query<-"http://export.arxiv.org/api/query?search_query=(au:( "Benoit Bertrand"))&start=0&max_results=2000"
xmlToList(query)

再多的 URL 编码和转换也无法解决这个问题。也不需要转换,因为 URL 在 US-ASCII 范围内。在该范围内,UTF8 字符串与 ASCII 字符串无法区分。

获取和解析此Arxiv页面的正确代码是:

//Just a URL
query<-"http://export.arxiv.org/api/query?search_query=(au:( "Benoit Bertrand"))&start=0&max_results=2000"
//Get the contents
r <- GET(query)
//Extract the text from the response
xml<-content(r, "text")
//Read as lists
l<-xmlToList(xml)

响应r不仅仅是一个字符串,它是一个包含标头(包括编码(、响应状态和响应内容的对象。其中一个标头是内容类型:

> r
Response [http://export.arxiv.org/api/query?search_query=(au:( "Benoit Bertrand"))&start=0&max_results=2000]
Date: 2019-09-30 12:54
Status: 200
Content-Type: application/atom+xml; charset=UTF-8
Size: 786 B

content(r, "text")使用该标头中存储的编码将内容转换为文本。

之后,xmlToList可以解析 XML 字符串

相关内容

  • 没有找到相关文章