LoginSignup
15
19

More than 5 years have passed since last update.

RからExcelで文字化けしないCSVを出力する

Posted at

とりあえずMacでしか確認してません。

ExcelでUTF-8のCSVを開くと文字化けする

例えば次のようなデータフレームをCSV出力したいとする。

df <- data.frame(a = letters[1:3],
                 b = c("あ", "い", "う"))

これをそのままwrite.csv()で出力するとUTF-8のCSVになるので、Excelで開くと文字化けする。

write.csv(df, "test.csv")

スクリーンショット 2017-05-17 12.38.23.png

ExcelはUTF-8のCSVをそのままでは開けない。

対策

Shift-JISで出力する

書き込み

write.csv(df, "test.csv", fileEncoding = "CP932")

なんだか負けたような気がするがとりあえずExcelで開いても文字化けしない。

読み込み時の注意

ただし読み込むときに再びエンコーディングを指定する必要がある。

read.csv("test.csv", fileEncoding = "CP932")

readr::read_csvでもエンコーディングの指定ができるけど少しやり方が異なるので注意。

readr::read_csv("test.csv", locale=readr::locale(encoding="CP932"))

BOM付きのCSVを出力する

書き込み

これもなんだか負けたような気がするけど扱いは多少楽になる。

readr::write_excel_csv()で出力すれば自動的にBOM(Byte Order Mark)付きのUTF-8で出力される。

readr::write_excel_csv(df, "test.csv")

読み込み

R 3.0.0からはBOM付きUTF-8でも普通に読めるので、read.csv()read_csv()ともにエンコーディング指定なしで特に問題は発生しない。確実にBOM殺したかったらUTF-8-BOMを指定するという手段もある様子(cf. R 3.0.0の大事な変更点 - Qiita)。

15
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
19