記憶の掃き溜め

物忘れが激しい大学生の忘備録

Macのターミナル上でjarが文字化けする

JavaでTwitte4jを用いてTwitter上の特定のワードをtxtファイルに書き起こすプログラムを作って、

定期的に実行して収集したいけどその都度IDE開いて実行するのも癪だし

Automatorシェルスクリプトからjarを実行した方が楽じゃね?

と思ったのでjarファイルに出力しました。

しかし、ターミナルからjarファイルを実行するとプログラム から出力される日本語(ファイル名とか)が

「????」みたいな感じに文字化けしちゃって困ってました(ー_ー;)

「IDEだと問題なく日本語も表示できるんだけどなあ…」って思いながら調べてみると

Macのターミナルの文字コードUTF-8に対して

javaの内部の文字コードShift-JISなのが原因だそうで

(…なんでShift-JISなんだろう( ´д`;) )

とりあえずコレをなんとかしないといけないので更に調べていると

javacの文字コードを設定するコマンドを「.bash_profile」ファイルに定義できるらしい

.bash_profileはシェル実行時に自動で読み込まれるファイルで、環境設定が記述されているとのこと

今回やったことは、

  • ○○(ユーザ名)直下にある「.bash_profile」ファイルを開く
  • 「export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8」を追加
  • 「source .bash_profile」コマンドを実行
  • 再起動(↑のコマンド実行すれば必要ないと思うけどなんとなく…(; ^ω^))

こうするとjavacやjarを実行する時に

「Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8」という文字列が

出て恐らく日本語が扱えるようになっていると思います

僕の場合これで終わらなくて…

ターミナルから直接コマンド打ったら日本語もちゃんと出力できるのに

Automatorに記述したコマンドをシェルで実行した時に日本語がまた????になるのなんでなんだろ・゚・(ノд`)゚・.