MacのJavaアプリで日本語ファイルを扱えない問題と解決策

2013年10月14日

Java 7以降をインストールしているMacではJava製アプリで日本語ファイルを取り扱えない不具合があります。

具体的にはJavaアプリ独自のファイル選択ダイアログで日本語パスを含むディレクトリやファイルが表示されませんし、保存するファイル名に日本語を使用すると「???? ???」というようなファイルができます。

java7_japanese_encoding

この不具合にはとても悩まされていて「Javaアプリって使えないな…」という失礼な感想さえ抱いていたのですが、今日この問題の解決策を書いているブログを発見したので解決策をご紹介します。

OS XにおけるJavaアプリケーションのエンコーディング – PiyoPiyoDucky
OS Xアプリケーションに環境変数を渡すには、launchctlコマンドのsetenvオプションで設定します …

原因

  • Java 6までは環境変数にUTF-8の指定があれば日本語エンコーディングを理解してくれていた
  • Java 7から”sun.jnu.encoding”の影響も受けるようになったので、別途アプリに対して環境変数を渡さなくてはならない(GUIアプリのみ)

あまり詳しく理解してはいないので詳しい説明はPiyoPiyoDuckyさんを参照してください。

対処法

ターミナルで以下のコマンドを実行します。

launchctl setenv LANG ja_JP.UTF-8

launchctlはdaemonやagentなど常駐コマンドを管理するコマンド、setenvは環境変数を管理するコマンドです。

上記コマンドは再起動のたびにリセットされてしまうので、再起動後も有効にしたいのならば再起動時に読み込まれ実行される「launchd.conf」ファイルに設定を書き込む必要があります。

以下のコマンドをターミナルで実行

sudo vim /etc/launchd.conf

そうすると管理者権限のパスワードを要求されるので入力。

vimというテキストエディタが起動しますので以下の操作に従って入力してください。

setenv_vim

  • iを押して挿入モードに移行
  • 「setenv LANG ja_JP.UTF-8」をペースト
  • ESCを押しノーマルモードに戻る
  • : w qと入力しreturn(ファイルを保存して終了)

スポンサーリンク