2017-10-29 ,

Windows版Emacs上でESSが文字化けする問題

勝手に default-process-coding-system 変えるなよ。

diff -u ess-20171022.322/lisp/ess-r-mode.el.old ess-20171022.322/lisp/ess-r-mode.el
--- ess-20171022.322/lisp/ess-r-mode.el.old     2017-10-29 01:06:34.182359100 +0900
+++ ess-20171022.322/lisp/ess-r-mode.el 2017-10-29 00:53:10.316792600 +0900
@@ -556,7 +556,8 @@
               (eq system-type 'cygwin))
       (setq use-dialog-box nil)
       (when ess-microsoft-p ;; default-process-coding-system would break UTF locales on Unix
-        (setq default-process-coding-system '(undecided-dos . undecided-dos))))
+        ;;(setq default-process-coding-system '(undecided-dos . undecided-dos))
+        ))
 
     (inferior-ess r-start-args cust-alist gdbp)
 

read.csvで入力した文字とバッファから入力した文字がどうしてもどちらか一方が化けてしまうので調べた。

Rがutf-8で入出力しているのかなと思って調べたら、Windows版はちゃんと現在のコードページで入出力してくれていた。 調べてみると process-coding-system のENCODING側がundecided-dosだから何事かと思ったら default-process-coding-system がRを起動した後だと書き換わっていた。 何でグローバルな設定である default-process-coding-system を勝手に書き換えちゃうかなー。

他にもWindows対応のコード(ess-microsoft-pで処理を分けているところ)は色々と変なところが多いね。