/ / Wie man ein chinesisches (und anderes Nicht-ASCII) Zeichen in einer Konsole anzeigt und eingibt? - r

Wie kann man chinesische (und andere Nicht-ASCII) Zeichen in der Konsole anzeigen und eingeben? - r

Mein System: win7 ultimative 64 englische Version + r-3.1 (64).
Hier ist meine SessionInfo.

> sessionInfo()
R version 3.1.0 (2014-04-10)
Platform: x86_64-w64-mingw32/x64 (64-bit)
locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252
LC_MONETARY=English_United States.1252 LC_NUMERIC=C
LC_TIME=English_United States.1252

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base

1.kann kein chinesisches Zeichen in r Konsole eingeben
Wenn ich ein chinesisches Zeichen in die r-Konsole eingebe, wird es zu einem verstümmelten Zeichen.

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

2.can kann chinesisches Zeichen auf der r Konsole nicht anzeigen
Wenn ich Daten in r Konsole lese, wird das chinesische Zeichen zu einem verstümmelten Zeichen.
Sie können die Daten herunterladen und mit testen

read.table("r1.csv",sep=",")

Daten herunterladen

Bildbeschreibung hier eingeben

Bitte sehen Sie sich die Grafik an, um die Daten herunterzuladen, wenn Sie nicht wissen, wie Sie die Daten aus meinem Internet beziehen können.

Bildbeschreibung hier eingeben

Wie kann ich meinen PC so einstellen, dass er chinesische Schriftzeichen in der Konsole richtig anzeigt und eingibt? Ich habe das chinesische Sprachpaket aktualisiert und aktiviert, aber das Problem bleibt bestehen.

Antworten:

4 für die Antwort № 1

Es ist wahrscheinlich nicht sehr gut dokumentiert, aber Sie möchten es verwenden setlocale um Chinesisch zu benutzen. Und die Methode gilt auch für viele andere Sprachen. Die Lösung ist nicht offensichtlich, wie das offizielle Dokument von setlocale hat es nicht ausdrücklich als eine Methode zur Lösung der Anzeigeprobleme erwähnt.

> print("ÊÔÊÔ") #试试, meaning let"s give it a shot in Chinese
[1] "ÊÔÊÔ" #won"t show up correctly
> Sys.getlocale()
[1] "LC_COLLATE=English_United States.1252;LC_CTYPE=English_United States.1252;LC_MONETARY=English_United States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252"
> Sys.setlocale(category = "LC_ALL", locale = "chs") #cht for traditional Chinese, etc.
[1] "LC_COLLATE=Chinese_People"s Republic of China.936;LC_CTYPE=Chinese_People"s Republic of China.936;LC_MONETARY=Chinese_People"s Republic of China.936;LC_NUMERIC=C;LC_TIME=Chinese_People"s Republic of China.936"
> print("试试")
[1] "试试"
> read.table("c:/CHS.txt",sep=" ") #Chinese: the 1st record/observation
V1   V2  V3 V4  V5   V6
1 122 第一 122 条 122 记录

Wenn Sie nur die Anzeigecodierung ändern möchten, ohne andere Aspekte von Gebietsschemata zu ändern, verwenden Sie LC_CTYPE Anstatt von LC_ALL:

> Sys.setlocale(category = "LC_CTYPE", locale = "chs")
[1] "Chinese_People"s Republic of China.936"
> print("试试")
[1] "试试"

Das gilt natürlich nur für den Offiziellen R Konsole. Wenn Sie andere IDEs verwenden, wie die sehr beliebten RStudioSie müssen das überhaupt nicht tun, um Chinesisch eingeben und anzeigen zu können, selbst wenn das chinesische Gebietsschema nicht geladen wurde.

Wenn die Daten immer noch nicht korrekt angezeigt werden, sollten wir auch das Problem der Dateicodierung untersuchen. Wenn die Datei ist utf-8 codiert, gleich data <- read.table("you_file", sep=",", fileEncoding="utf-8-BOM", header=TRUE) oder fileEncoding="utf-8" wird tun, hängt davon ab, welche Codierung es wirklich hat.

Aber du solltest dich vielleicht fern halten UTF-BOM wie es nicht empfohlen wird: Was ist utf-8 und utf-8 ohne BOM?