Re: [問題] 讀入"鴴" "鸊鷉" 等怪字

看板R_Language作者 (攸藍)時間9年前 (2015/07/04 10:07), 9年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/6 (看更多)
※ 引述《helixc (@_2;)》之銘言: : [軟體熟悉度]: : 新手+入門 : [問題敘述]: : 如標題,因為再分析鳥類的資料,所以會遇到鴴、鸊、鷉這種某些系統無法顯示的字 : 和程式語言不太熟,好像是BIG5的編碼比較少,所以遇到這些怪字會崩潰, : 轉到UTF8就會恢復正常? : 問題是目前手邊的名錄都是放在Excel當中, : 這些怪字在Excel當中活得很好,但一輸出成CSV等純文字文件就會變成亂碼。 : 我再去Notepad++等軟體轉換編碼也沒有用。 : [程式範例]: : 鳥類名錄資料在下面: : https://dl.dropboxusercontent.com/u/18689552/birdnames.xls : 另外我在NotePad++自己打了一個用UTF-8編碼的檔案如下: : https://dl.dropboxusercontent.com/u/18689552/birdnametest.txt : 裡面只有兩行字: : 173,反嘴鴴,長腳鷸科 : 174,水雉,水雉科 txt部分: read.table, read.csv加上encoding = "UTF-8"只能讀到第二行 但下面這個有成功: readLines("birdnametest.txt", encoding = "UTF-8") %>% strsplit(",") %>% do.call(rbind, .) # [,1] [,2] [,3] # [1,] "173" "反嘴鴴" "長腳鷸科" # [2,] "174" "水雉" "水雉科" http://imgur.com/1Gsldsu
另外 fread不能調encoding,完全讀不進去,iconv也失敗(攤手 xls部分: 好讀上色版:http://pastebin.com/2L5UrhSq library(rJava) library(xlsx) library(data.table) library(magrittr) fileName = "birdnames.xls" original_data = read.xlsx2(fileName, 1, header=TRUE, encoding = "UTF-8", as.data.frame=FALSE) %>% do.call(cbind, .) %>% data.table() # data.table在這裡是非必要,為了後面的setnames而用的 data_names = read.xlsx2(fileName, 1, header=FALSE, startRow=1, endRow=1, encoding = "UTF-8", as.data.frame=FALSE) %>% unlist() # 這行是因為header通常讀不進去要手動 original_data %<>% setnames(data_names) # setnames是data.table的function,提供不複製直接重新命名data.table的方法 # 如果前面不用data.table,這裡可以改成用magrittr的set_names # 或是直接用names() <- original_data$c_name http://imgur.com/XyK5d0f
http://imgur.com/c97dRSQ
# readxl套件: (不用JAVA,讀取也比較快,也不會轉換字串為factor) library(readxl) dat = read_excel("birdnames.xls") dat$c_name 補上session information: > sessionInfo() R version 3.2.1 (2015-06-18) Platform: x86_64-w64-mingw32/x64 (64-bit) Running under: Windows 7 x64 (build 7601) Service Pack 1 locale: [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 [2] LC_CTYPE=Chinese (Traditional)_Taiwan.950 [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 [4] LC_NUMERIC=C [5] LC_TIME=Chinese (Traditional)_Taiwan.950 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.205.27.107 ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1435975669.A.562.html ※ 編輯: celestialgod (123.205.27.107), 07/04/2015 13:10:06

07/04 14:02, , 1F
好神奇,我試試看,感謝!
07/04 14:02, 1F
文章代碼(AID): #1Lbp_rLY (R_Language)
文章代碼(AID): #1Lbp_rLY (R_Language)