2017-12-28 57 views
2

R에서 JSON 패키지를 사용할 때 인코딩을 변경하는 방법은 무엇입니까?r에 JSON 인코딩하기

for (pageNum in 0:20) { 
    data <- fromJSON(paste0("https://api.hh.ru/vacancies?text=\"бухгалтер\"&page=", pageNum)) 
    vacanciesdf <- rbind(vacanciesdf, data.frame(
    data$items$area$name, 
    data$items$salary$currency, 
    data$items$salary$from, 
    data$items$employer$name, 
    data$items$name, 
    data$items$snippet$requirement)) 
    print(paste0("Upload pages:", pageNum + 1)) 
    Sys.sleep(3) 
} 

영어의 경우, 키워드 도입시 API에서 다운로드하면 작동하지만 아무것도 러시아어로로드되지 않습니다. 문제가 인코딩에 있다고 가정합니다. 하지만 UTF-8을 설치하는 방법은 무엇입니까?

답변

1

이러한 종류의 문제는 'fromJSON'이 종종 문제를 해결하기 전에 '콘텐츠를 사용하여 GET'을 사용하여 UTF-8 인코딩을 적용하는 것은 어렵지만 재현하기가 어렵습니다.

질문에 제공된 URL이 오류를 반환하므로이 솔루션은 사용자가 사용중인 API에서 인수 목록을 가져 오는 주체를 보여줍니다.

library(httr) 
library(jsonlite) 

URL <- "https://api.hh.ru/vacancies?describe_arguments=true" 
text <- content(GET(URL)), as = "text", encoding = "UTF-8") 
data <- fromJSON(text) 

이렇게하면 UTF-8로 인코딩 된 JSON이 반환됩니다.

+0

감사합니다. 오류 :

 > data <- content(GET(paste0("https://api.hh.ru/vacancies?text=\"бухгалтер\"&page=", pageNum),as = "text", encoding = "UTF-8")) > data <- fromJSON(text) Error: Argument 'txt' must be a JSON string, URL or file. 

+1

은 링크 자체에 문제가있는 것 같습니다. 브라우저에 입력하면이 오류 메시지가 나타납니다. – GGAnderson

+0

좀 더 조사를 했습니까? 핵심 문제는 paste0 다음의 아웃 바운드 URL에 올바른 하이브리드 인코딩을 유지하는 것 같습니다. 시스템의 기본 인코딩은 무엇입니까? 당신은 이것을 찾을 수 있습니다 : Sys.getlocale (category = "LC_CTYPE") – GGAnderson