Write UTF-8 Chinese characters from R to a CSV on Windows

Viewed 345

I'm able to scrape and display Chinese characters like this:

pacman::p_load(rvest, stringr)
Sys.setlocale("LC_CTYPE", locale="Chinese")

cheese <- read_html("http://www.kekenet.com/read/story/cheese/")

links <- 
cheese %>%
  html_node(".box") %>%
  html_nodes("li") %>%
  html_nodes("a")

links <- links[grepl("read",links)]

url_pattern <- "http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\\(\\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"

links <- str_extract(links, url_pattern)
links <- links[grepl(".shtml",links)]

text <- data.frame(english=as.character(), chinese=as.character(), stringsAsFactors = F)

for(u in links){
  cheese <- read_html(u)
  tmp0 <- 
    cheese %>% 
    html_nodes(xpath = '//*[@class="qh_en"]') %>%
    html_text()
  tmp0 <- gsub('\"', "", tmp0, fixed = TRUE)

  tmp1 <- 
    cheese %>% 
    html_nodes(xpath = '//*[@class="qh_zg"]') %>%
    html_text()
  tmp1 <- gsub('\"', "", tmp1, fixed = TRUE)

  if(length(tmp0)==length(tmp1)){
    tmp <- data.frame(english=tmp0, chinese=tmp1, stringsAsFactors = F)

    text <- rbind(text, tmp)

  }
}

However, even when I set the file encoding, when I save it to CSV like this

write.csv(text, "english_chinese_test.csv",fileEncoding = "UTF-8")

the resulting file has values like this instead of Chinese characters:

2éè°è¨¤o¥ééo1è·¢ ′ˉèˉ′3ˉo¤§¤°oo風3¨è§1|èa·±éo|è3ˉè§ˉ1èa·±aooèˉ′è§1ˉaooé飰é |-¤èo飰éoo¨é1è1è·è¤oè°èˉ′aˉooèμ·¥èˉ1é£aoo·èa¥¨¤°±é£°éè°±ˉèˉ′o1é′o±è§±éé¢o- è′oééé£1oo°¥éao¥μ1·o "è°èoèèèè°èˉ′μˉo1é′o±1oo¤§éèa·±è¢oo

" å¬äº†è¿™ç•ªè¯ï¼Œæ‰€æœ‰äººéƒ½æƒ³åˆ°äº†è‡ªå·±çš„生活,大家安é™ä¸‹æ¥ã€‚ 呃,æ°è¥¿å¡æ¸…了清嗓å­ï¼Œæ‰“破了å®é™ï¼Œå¤§å®¶å¥½åƒéƒ½åœ¨è°ˆè®ºè‡ªå·±çš„工作,但是我å¬åˆ°äº†è¿™ä¸ªæ•…事以åŽï¼Œå´æƒ³åˆ°äº†æˆ‘的个人生活。我觉得我目å‰çš„æƒ…况,我的家庭关系,就åƒä¸€ä¸ª'旧奶酪',上é¢é•¿æ»¡äº†éœ‰èŒã€‚ 柯瑞笑出声æ¥ï¼Œè¡¨ç¤ºèµžåŒï¼šæˆ‘也是。我也许我现在最该采å–è¡ŒåŠ¨çš„å°±æ˜¯è®©ä¸€æ®µä¸æ„‰å¿«çš„关系尽快过去。 å®‰æ°æ‹‰å驳é“:我ä¸åŒæ„你的观点,也许这个'旧奶酪'åªæ˜¯ä¸€ç§æ—§çš„行为方å¼ã€‚æˆ‘ä»¬éœ€è¦æ”¾å¼ƒçš„åªæ˜¯å¼•èµ·è¿™ç§çŠ¶å†µçš„æ—§çš„è¡Œä¸ºæ–¹å¼ï¼Œè€Œä¸æ˜¯è¿™ä¸ª'奶酪'。这样我们æ‰ä¼šæœæ›´å¥½çš„æ€ç»´å’Œè¡Œä¸ºæ–¹å¼è½¬å˜ã€‚

0 Answers
Related