[備忘]使用 Docker 中的R Jupyter,中文顯示與輸出異常??
問題:
使用 Docker 中的R Jupyter,中文顯示與輸出異常??
輸入中文字串正常,檢查編碼也是 UTF-8
解法:[暫解]
- 在R中設定語系: Sys.setlocale(category = "LC_ALL", locale = "C.UTF-8")
- Sys.setlocale()的效果是暫時性的,下次再開一個新的notebook時需要重新啟用
- 經過測試,在讀入網頁時都會自動轉成 UTF-8 也都能無誤的輸出 UTF-8 資料
- 讀入資料時,例如讀入 BIG5 編碼的 CSV 文件時,只要指定正確編碼格式也能正確讀入R中 ---ex: read.table("ubike-sampledatabig5.csv" ,header=TRUE, fileEncoding="BIG5")
- 網路上有建議將 BIG5 文件全部轉成 UTF-8後再處理,在Linux應該只需要在讀入時指定好編碼格式即可… 因為我測試用 readLines 轉編碼會異常…
- Docker 只是測試環境,所以不想在設定上尋求完美的解法;後續在生產環境時,會是單純的 R 搭配著 zh_TW.UTF-8 的設定
- 聽說在 Linux 版本的 R 不需要擔心編碼問題 ?
- 變數儲存中文無異常;下例: 網路上的即時新聞標題 title_css,直接以 title_css 執行,則正常顯示中文
但是若用 print(title_css)或是 write.table()輸出文字檔,則會出現如下錯誤
經 Encoding(title_css)檢查也是 UTF-8
因為是 Docker 所啟用的ubuntu所以確認語系等相關設定為何?
發現和一般安裝 Ubuntu 的狀況不同…
發現 Docker 中所預設的語系比一般情況下的 Ubntu 少了很多,所以若是在 R 中執行網路上建議的 Sys.setlocale(category = "LC_ALL", locale = "en_US.UTF-8")會有錯誤訊息…
取而代之,我們可以使用
則將變數搭配 print() 或是相關輸出函式時就能正常顯示中文 write.table()
參考文件:
沒有留言:
張貼留言