2012-06-08 9 views
6

Próbuję otworzyć plik CSV zakodowany w UTF-8, który zawiera (tradycyjne) znaki chińskie w R. Z jakiegoś powodu, R wyświetla informacje czasem jako znaki chińskie, czasami jako kod Unicode postacie.Wyświetlanie znaków chińskich zakodowanych w UTF-8 w R

Na przykład:

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

data 

będzie produkować znaki Unicode, przy czym:

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

data[,1] 

rzeczywiście wyświetlania znaków chińskich.

Jeśli zmieni się to w matrycę, będzie również wyświetlać chińskie znaki, ale jeśli spróbuję spojrzeć na dane (polecenie Zobacz (dane) lub naprawić (dane)), znowu jest w Unicode.

Poprosiłem o poradę od osób używających komputera Mac (korzystam z komputera PC, Windows 7), a niektóre z nich mają chińskie znaki, inne nie. Próbowałem zapisać oryginalne dane w postaci tabeli i odczytać ją w R w ten sposób - ten sam wynik. Próbowałem uruchomić skrypt w RStudio, Revolution R i RGui. Próbowałem dostosować ustawienia narodowe (np. Chińskie), ale albo R nie pozwolił mi tego zmienić, albo wynik był bełkotem zamiast znaków unicode.

My prąd regionalne są:

"LC_COLLATE = French_Switzerland.1252; LC_CTYPE = French_Switzerland.1252; LC_MONETARY = French_Switzerland.1252; LC_NUMERIC = C; LC_TIME = French_Switzerland.1252"

Jakakolwiek pomoc, aby R konsekwentnie wyświetlać chińskie znaki, byłby bardzo doceniany ...

+0

Hm, wygląda to jak robaka. Zainteresowani mogą łatwo odtworzyć ten kod: 'x = c ('中華民族'); x; data.frame (x)'.Nie próbuj wklejać tego kodu do edytora R, po prostu wklej go bezpośrednio do konsoli lub nie zadziała. – nograpes

+0

Zobacz moją odpowiedź na http://stackoverflow.com/questions/22876746/how-to-read-data-in-utf-8-format-in-r – Sathish

Odpowiedz

2

Nie błąd, raczej nieporozumienie dotyczące konwersji systemu podstawowego typu (typ character i factor) podczas konstruowania data.frame.

Możesz zacząć od pierwszej z data <-read.csv("mydata.csv", encoding="UTF-8", stringsAsFactors=FALSE), która sprawi, że twoje chińskie znaki będą miały typ character, a więc drukując je, powinieneś zobaczyć oczekiwany waht.

@nograpes: podobnie x=c('中華民族');x; y <- data.frame(x, stringsAsFactors=FALSE) i wszystko powinno być w porządku.

+1

Właściwie to nie działa dla mnie. Spróbuj uruchomić ten kod, a następnie 'print (y)'. Zrobiłem [pytanie na ten temat] (http://stackoverflow.com/questions/17715956/why-do-some-unicode-characters-display-in-matrices-but-not-data-frames-in-r) bardziej bezpośrednio rozwiązując problem. – nograpes

+0

Co ciekawe, to teraz działa dla mnie (w międzyczasie przełączyłem się na inny komputer, który może lub nie ma znaczenia). Dzięki! – user1445297

1

W moim przypadku kodowanie utf-8 nie działa w moim r. Ale kodowanie Gb * działa. Ale utf8 zapisuje się w Ubuntu. Najpierw musisz znaleźć domyślne kodowanie w systemie operacyjnym. I zakodować to takim, jakie jest. Program Excel nie może zakodować go poprawnie jako utf8, nawet jeśli zapisuje go jako zapisany jako etf8.

(1) Pobierz "otwarty arkusz".

(2) Otwórz prawidłowo. Możesz przewijać metodę kodowania, dopóki nie zobaczysz chińskiego znaku wyświetlanego w oknach podglądu.

(3) Zapisz jako utf-8 (jeśli chcesz utf-8). (UTF-8 nie jest rozwiązaniem każdego problemu, MUSISZ TO wiedzieć domyślnego kodowania w systemie pierwszego)

Powiązane problemy