顯示具有 中文編碼 標籤的文章。 顯示所有文章
顯示具有 中文編碼 標籤的文章。 顯示所有文章

2015/9/30

在Windows 系統捉取網頁中文資料時會有亂碼,要如何處理?[R]

Q:在Windows 系統捉取網頁中文資料時會有亂碼,要如何處理?

A:使用 library(tmcn) 套件轉utf8


效果節錄:
未使用tmcn套件前:
[1] “\xe7摰單\x87\xae葉敹圾\xe9\xe6\x89偷\xe5 \xe5\xe9\xe5\xe5璈\xe6頧\x9f”
[2] “鈭箸腦\xe6\x96嚗\xb6晷\xe3\u0080擛亦\xb5\u0080\x8d 瞈\u0080瘣芷\xe7\x87\xe6”
使用tmcn套件與 toUTF8 函數後:
[1] “大樹阻台北淡水路 北投警冒雨排除”
[2] “曾抗議連戰赴中被美禁入境 王世堅坦然面對”

2015/9/20

[備忘]使用 Docker 中的R Jupyter,中文顯示與輸出異常??


[備忘]使用 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 不需要擔心編碼問題 ?
若用 Sys.getlocale() 檢查只會回傳 'C' ,依網路上的文章理論上應該是不會有問題才是;但是 Jupyter 相關的討論串中也有人建議應該要加進  en_US.UTF-8 因為在部份字元排序會與 C.UTF-8 有不一致的情形發生?
  • 變數儲存中文無異常;下例: 網路上的即時新聞標題 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()

參考文件: