コード内に日本語を含むパッケージはDESCRIPTIONにEncode:UTF-8って書いとかないといけないっぽい

最近Rを動かす環境をWindowsに変えたんですが、文字コードまわりではまりまくってます...。

↓こんな感じでUnicode文字を含むコードがあると、

choroplethrOsakaCity/util.R at 771c1d09ca3a09eb45552efa0c0a1ff37095ab67 · yutannihilation/choroplethrOsakaCity · GitHub

to_osaka_ward_code <- function(ward_name, from = c("kanji", "alphabet")) {
  from <- match.arg(from)

  if(from == "kanji") {
    # add 区 suffix if no 区
    ward_name_ <- str_replace_all(ward_name, "([^区])$", "\\1区")

見事に文字化けします。。

to_osaka_ward_code
#> function(ward_name, from = c("kanji", "alphabet")) {
#>   from <- match.arg(from)
#> 
#>   if(from == "kanji") {
#>     # add 蛹コ suffix if no 蛹コ
#>     ward_name_ <- str_replace_all(ward_name, "([^蛹コ])$", "\\1蛹コ")

で、困り果てていたところ、こんな情報がありました。

qiita.com

Encoding: UTF-8

という一行をDESCRIPTIONファイルに書いてみると、文字化けが直りました。ほっ。

パッケージをビルドするときにすでに化けているのか、ロードするときに化けているのかよく分かりませんが、とにかくWindowsのデフォルトのエンコーディングShift_JISなのに、RのファイルのエンコーディングUTF-8なのが問題らしいです。

uribo氏の解説(↓)を読んですっかり紐解いた気になっていたDESCRIPTIONですが、まだ紐解かれていない闇が色々あるという知見を得た出来事でした。うむむ。。

qiita.com