2012-06-08 42 views
6

中國文字我嘗試打開一個包含R.(傳統)中國人物出於某種原因,一個UTF-8編碼的.csv文件,R有時顯示的信息是中國字,有時爲Unicode字符。顯示UTF-8編碼中的R

例如:

data <-read.csv("mydata.csv", encoding="UTF-8") 

data 

會產生Unicode字符,而:

data <-read.csv("mydata.csv", encoding="UTF-8") 

data[,1] 

將實際顯示中國文字。

如果我把它變成一個矩陣,它也將顯示中國的字符,但如果我嘗試看看數據(命令視圖(數據)或修復(數據)),它採用的是unicode一次。

我要求的意見,從誰使用的是Mac(我使用電腦,Windows 7)的人,他們中的一些在整個中國得到了字,另一些則沒有。我嘗試將原始數據保存爲表格,並將其讀入R,結果相同。我嘗試在RStudio,Revolution R和RGui中運行腳本。我試圖調整語言環境(例如中文),但是R沒有讓我改變它,否則結果是亂碼而不是unicode字符。

我的當前區域是:

「LC_COLLATE = French_Switzerland.1252; LC_CTYPE = French_Switzerland.1252; LC_MONETARY = French_Switzerland.1252; LC_NUMERIC = C; LC_TIME = French_Switzerland.1252」

任何幫助讓R始終顯示中文字符將不勝感激...

+0

恩,這看起來像一個bug。對於那些感興趣的人來說,這個代碼很容易重現:'x = c('中華民族'); x; data.frame(x)'。不要試圖將該代碼粘貼到R編輯器中,只需將其粘貼到控制檯中或不起作用。 – nograpes

+0

看到我的答案在http://stackoverflow.com/questions/22876746/how-to-read-data-in-utf-8-format-in-r – Sathish

回答

2

不是一個錯誤,更多的是對基礎類型系統轉換的誤解(character類型和factor類型)時構建data.frame

您可以先從data <-read.csv("mydata.csv", encoding="UTF-8", stringsAsFactors=FALSE)開始,這將使您的中文字符爲character類型,因此通過打印出來您應該看到您期待的內容。

@nograpes:同樣x=c('中華民族');x; y <- data.frame(x, stringsAsFactors=FALSE),一切都應該沒問題。

+1

其實,這並不適合我。嘗試運行該代碼,然後「打印(y)」。我已經[有關此問題](http://stackoverflow.com/questions/17715956/why-do-some-unicode-characters-display-in-matrices-but-not-data-frames-in-r)更直接地解決問題。 – nograpes

+0

有趣的是,現在對我來說很有效(我在此期間切換到另一臺計算機,這可能會或可能不會有所作爲)。謝謝! – user1445297

1

在我的情況下,UTF-8編碼並不在我的[R工作。但是Gb *編碼起作用。但是ubuntu中的utf8 wroks。首先,你需要找出操作系統中的默認編碼。並按原樣進行編碼。 Excel無法正確編碼爲utf8,即使它聲稱保存爲etf8。

(1)下載的 '開放片'。

(2)正確打開它。您可以滾動編碼方法,直到您看到預覽窗口中顯示的中文字符。 (3)將其另存爲utf-8(如果你想要utf-8)。 (UTF-8不是解決所有問題的方法,你需要知道你係統中的默認編碼方式)