[R]read_lines関数で様々な文字コードのテキストファイルを読み込む
localeオプションを使用する。はじめに、この動作確認のためのテキストファイルをPowerShellで作成する。それぞれ文字コードがシフトJISとUTF-8(BOM無し)のCSVファイルを作成している。
PS > $lines = "1,セナディア,鈴木みのり", "2,イレイナ,本渡楓"
PS > $odir = (gl).Path
PS > $lines | Out-File -Encoding default ($odir + "\sjis.csv")
PS > [IO.File]::WriteAllLines(($odir + "\utf8nb.csv"), $lines)
PS > Get-Content sjis.csv
1,セナディア,鈴木みのり
2,イレイナ,本渡楓
PS > Get-Content utf8nb.csv -Encoding utf8
1,セナディア,鈴木みのり
2,イレイナ,本渡楓
read_lines関数を使用する際に、localeオプションに文字コードを指定すればよい。以下の例のとおり、デフォルトではUTF-8で読み込もうとするため、UTF-8であれば明示的に指定しなくてもかまわない。
> library(tidyverse)
> read_lines("sjis.csv", progress = FALSE)
[1] "1,<83>Z<83>i<83>f<83>B<83>A,<97><96><U+0602><U+0742><U+0302>" "2,<83>C<83><8c><83>C<83>i,<96>{<93>n<95><96>"
> read_lines("sjis.csv", progress = FALSE, locale = locale(encoding = "SJIS"))
[1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓"
> read_lines("utf8nb.csv", progress = FALSE)
[1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓"
> read_lines("utf8nb.csv", progress = FALSE, locale = locale(encoding = "UTF-8"))
[1] "1,セナディア,鈴木みのり" "2,イレイナ,本渡楓"
