メニューの File -> Init Script... から init.coffee を開いて、下記を追加してください。
CoffeeScript
1process.env.JAVA_TOOL_OPTIONS = '-Dfile.encoding=UTF-8'
Atomを再起動して、UTF-8のソースコードで試して見てください。"Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8"と言う文が前後につきますが、きっとうまくいくはずです。(古いJavaだとオプションが異なるらしいので、Java8以上を使ってください)
【解説】
Javaはシステムのエンコードをデフォルトのエンコードと見なします。つまり、日本語版Windowsの場合は、Windows-31J(別名CP932、Shift_JISの亜種)でJavaのソースコードが書かれているという前提で動作します。そのため、ソースコードがUTF-8の場合、日本語文字列があるとコンパイルに失敗します。これが、Shift_JISにしないとコンパイルすらできない理由です。
なお、コンパイルされた後のバイナリであるclassファイル内で文字列はUnicode(正確にはUTF-16)になっています。
そして、出力に関しても同様で、システムのエンコード、Windows-31Jを使用します。classファイル内のUnicode文字列もWindows-31Jに変換された後に出力されます。コマンドプロンプトで日本語文字列が正常に出るのはこれが理由です。しかし、Atomは全てUTF-8で管理しており、scriptの出力画面もUTF-8になっています。これでは、Windows-31Jで出力されてしまった文字列を正常に表示することはできず、文字化けする理由です。
そこで、全てをUTF-8にしてしまえばいいのだ!というのが上の呪文です。JavaのツールはJAVA_TOOL_OPTIONS環境変数で、javaやjavac実行時のオプションを渡すことができます。init.coffeeにprocess.env.環境変数
で設定するとAtom内の環境変数がそれに設定されるため、scriptが内部で実行するjavacやjavaもその環境変数を使います。そうして、コンパイル時もUTF-8を、JavaVM実行時もUTF-8を使うようになり、文字化けが解消されるというわけです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/05/27 15:07
2020/02/08 08:11