macc704 / commonlibrary

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

commonlibrary

OS Xの文字コード問題

条件: OS X, JDK7以上 症状:Fileクラスを使ったプログラムで,日本語ファイル名,フォルダ名のものが動かない. (exists()メソッドがfalseを返す)

調べたサイト: OS XのJava 7ではFileにバグがある【と思っていた】 http://qiita.com/ripplestep/items/fbdd5765a64a00be6410 http://piyopiyoducky.net/blog/2013/06/03/encoding-of-java-application-in-os-x/

事実: ・sun.jnu.encodingはfile.encodingと同様に環境変数LANGによって値が判別され、ja_JP.UTF-8であればUTF-8が設定される. ・LANG設定がFileクラスで名前検索をするときに使われる.

・LANG環境変数は,シェルでは自動的にja_JP.UTF-8に設定される. →jarダブルクリックでは動かないが,コマンドから起動すると動く現象はこのため.

・実験の結果,-Dsun.jnu.encoding=UTF-8 は,Fileクラスのバグにはあまり効果がない. (実験の結果,上記JVM変数を指定しても,オーバーライドできなそうである)

解決案: ・すべてのアプリ起動時にLANG環境変数を設定 > launchctl setenv LANG ja_JP.UTF-8 ・Eclipseはこのコマンドをうった後,立ち上げ直す.

2013.10.14, matsuzawa (一時的に設定 export LANG=ja_JP.UTF-8)

About


Languages

Language:Java 100.0%Language:Shell 0.0%Language:Batchfile 0.0%