文字化けへの対応
R Presentation Previewでの文字化け
RStudioのR Presentationは、スクリプトを書くと動的にプレゼンテーション画面が作成されていくので、イメージを確認しながらプレゼンスライドを作成できる便利な機能だ。
当初このPreview画面が文字化けして対応に数日を要しほど苦慮したが、結果的に回避方法が見つかったので記しておく。
問題の根源
Windows環境PCではCP932(マイクロソフトがShift JISを拡張したもの)がデフォルトなので、当初はRStudioのエンコーディングもCP932をあえて選択していた。
しかし、Previewで生成されるHTMLのヘッダのmeta記述のcharset=UTF-8をみてショック。つまり、Preview画面を作っているPandocというパッケージが、Unicodeが標準となっていてそれ以外は使えないということらしい。
当初は、Previewの設定を変更する方法をいろいろと検索して対応しようとしたが、結局は見つからず、それでもRStudioで作ったと思われる日本語スライドをたくさん見るにつけ、PCを使っている人は他にもいるだろうに自分だけできないのも癪に障るなぁと鬱憤を溜めていた。
参考までに2016年2月現在の環境をメモしておく。
- OS Windows7 Home Premium/Enterprise (2台使用)
- R 3.2.3
- RStudio 0.99.491
- rmarkdown 0.9.2
- knitr 1.12.3
回避方法
結局、デフォルトの文字コードをUTF-8に変更した。RStudioのGlobal Optionsでも文字コードをのデフォルトを、CP932からUTF-8に変更。さらに、Project Optionの文字コードも同様に変更。
これで新規作成した.rpresファイルは文字化けしないようだ。
ソースファイルも、Save with Encoding UTF-8で保存し、再度Open with Encodingで開き、Preview表示をすると、スムーズに日本語が表示された。
ただし、ソース側のフィールド名などで日本語を使っていると、スペルチェックなのか赤い波線が表示されるようになった。まあ、いいか。
追記
スムーズに動いているように見えるが、たとえばヘルプなどを開いたりすると、突然に文字化けが始まることがある。おそらくこの原因は、PCに保存されているほとんどのヘルプファイルがCP932を基礎として用意されているからだと考えられる。
慌てず落ち着いて、ヘルプファイルを閉じた上で、スクリプトをいったんUTF-8で保存し再Openすれば、問題なく元に戻った。
少し文字化け
全体が化けてしまうコードエラーの文字化けは対処できても、相変わらず一部の文字化けが直らないことがある。
これは、どうやら特定の文字コードに対応する部分のみが化けているようなので、基本的な設定は誤っていない。と思えるのだが、どこか微妙なところがもれているのだろう。
権限との関係(全く別の観点)
管理者権限でWindowsに入って使うR Presentationは文字化けしないが、自分のIDで入ると一部に文字化けが残る。
管理者権限で使っている環境設定と、個人IDで使っている環境設定はフォルダが異なっている。つまり環境設定のどこかで誤りがある可能性が高い。
- ということは管理者権限で起動するとよい?
スタートアップにある起動用のアイコンのプロパティを呼び出し、特権レベルの項目で「管理者権限でこのプログラムを実行する」にチェックを入れてみる。
http://www.cwk.zaq.ne.jp/fkhud708/files/R-prg-intro/R-prg-intro_01.pdf
- 環境変数を設定してみる
オフィスのPCは環境変数が設定できないようにガチガチにガードが堅い。
そこでRStudioを使うときだけに環境変数を追加設定するようにすればいいのかもしれないが、よくわからない。
Sys.setenv(HOGEHOGE = "sjis")
で、環境変数**HOGEHOGE**を強制的にsjisにしてやることができるが・・・。
Sys.getenv()
で確認する。
Last updated 2018-09-11 | auditR (c) N.Nawata