2017-10-29 2 views
2

RStudioにデータセットをインポートしようとしていますが、厄介なコードになってしまいます。コードは次のとおりです。readr :: read_csv問題:中国語の文字が乱雑なコードになる

library(tidyverse) 
df <- read_csv("中文,英文\n英文,德文") 
df 
# A tibble: 1 x 2 
    `\xd6\xd0\xce\xc4`   `Ӣ\xce\xc4` 
       <chr>     <chr> 
1 "<U+04E2>\xce\xc4" "<U+00B5>\xc2\xce\xc4" 

私は基本機能read.csvを使用するとうまくいきます。私はエンコーディングに間違ったことをしなければならないと思う。しかし、read_csvにはエンコーディングオプションはありません。どうしたらいいですか?

+1

あなたは[こちら]をチェックします(https://stackoverflow.com/questions/22876746/how-to-read-data-in-utf-8-format-in- r)または[ここ](https://stackoverflow.com/questions/20577764/set) -locale-to.-system-default-utf-8)。 'read_csv'には、' locale'引数があります。ドキュメント 'locale ロケールは、場所によって異なるデフォルトを制御します。デフォルトのロケールはRのような米国中心ですが、locale()を使って独自のロケールを作成して、デフォルトのタイムゾーン、エンコーディング、小数点記号、大きなマーク、日/月の名前などを制御することができます。 – akrun

+0

また、 'readr'は' locale'を介して代替エンコーディングを読むことができます。しかし、*すべてのreadr関数は、[パッケージドキュメント](https://github.com/tidyverse/readr/blob/master/vignettes/locales.Rmd)に従ってUTF-8 *でエンコードされた文字列を生成します –

+0

ご意見ありがとうございます@ akrun @Kevin Arseneauあなたが言ったようにしてみました。しかし、それはまだ動作しません。 Sys.setlocale(category = "LC_ALL"、locale = "chinese"); sys_setlocale(category = "LC_ALL"、ロケール= "英語_United States.1252")read_csv( "a、b \ n坏、好")Sys.setlocale ) read_csv( "a、b \ n坏、好") ' –

答えて

3

これは、文字がUTF-8とマークされているのに対し、実際のエンコーディングはシステムのデフォルト(stringi::stri_enc_get())であるためです。

だから、あなたはどちらかを行うことができます:

1)正しいエンコーディングを使用してデータを読む:

df <- read_csv("中文,英文\n英文,德文", locale = locale(encoding = stringi::stri_enc_get())) 

2)ことに注意してください(間違ったエンコーディングを使用してデータを読み、後で正しいエンコーディングでそれらをマークこの常に)は動作しません:

df <- read_csv("中文,英文\n英文,德文") 
df <- dplyr::mutate_all(df, `Encoding<-`, value = "unknown") 
+0

お寄せいただきありがとうございます!それはかなりうまくいく! –

関連する問題