Mac OS X 10.8(ターミナルから)でJavaプログラムを実行しており、Java VM's file.encoding
はデフォルトで「SJIS」になっています。システムプロパティを出力するだけの小さなJavaプログラムを試してみましたが、これはJava VM =それ自体はデフォルトでSJISになっています(それに直面しましょう、誰もSJISが好きではありません!)
私の端末はUTF-8に設定されています。 $ LANGが設定されておらず、$ LC_CTYPEが「UTF-8」です。環境変数や端末設定には、どこにも「JIS」が含まれていません、AFAICT。
Mac OSXのJavaでは、どこでfile.encoding
からの値? UTF-8を使用するように変更できるシステム設定はありますか?プログラムによっては「ぎこちない」と「不可能」の間のどこかにあるので、このアプリケーションごととライブラリごとに指定する必要はありません。
このための環境変数を設定しても大丈夫だと思いますが、Javaに影響を与える標準変数($ LANGなど)が見つかりません。
このコードはいつでもお気に入りのIDEのJavaクラスに入れることができます
_import Java.nio.charset.Charset;
(...)
Charset.defaultCharset()
_
次に、defaultCharset()
リンクをたどって、JVMインスタンスがデフォルトの文字セットを決定する方法を理解します。 win64bホットスポットJVMjdk 1.7の例:
_/**
* Returns the default charset of this Java virtual machine.
*
* <p> The default charset is determined during virtual-machine startup and
* typically depends upon the locale and charset of the underlying
* operating system.
*
* @return A charset object for the default charset
*
* @since 1.5
*/
public static Charset defaultCharset() {
if (defaultCharset == null) {
synchronized (Charset.class) {
String csn = AccessController.doPrivileged(
new GetPropertyAction("file.encoding"));
Charset cs = lookup(csn);
if (cs != null)
defaultCharset = cs;
else
defaultCharset = forName("UTF-8");
}
}
return defaultCharset;
}
_
ご存知のように、起動時にいつでも_file.encoding
_を設定できます。
_Java -Dfile.encoding=UTF-8 MyClass
_
あなたの場合、SJIS
は日本のエンコーディングを参照しているようです(MS Japan OS src )?つまり、_LANG=ja_JP.PCK
_( src )の場合、SJIS
がデフォルト値になる可能性があります。