• ベストアンサー

Javaでデフォルトエンコーディングについて質問します。

Javaでデフォルトエンコーディングについて質問します。 OSはWindowsXPです。 String.getBytes()などを使ったとき、文字コードはデフォルトのものが使われます。 WindowsXPなら、UTF-8がデフォルトのはずです。 ですが、とあるマシン1台のみ、Windows-31Jがデフォルトになってしまいます。 これは、何が原因なのでしょうか? もともとマシンを使っていた人間が細工をしたのでしょうが、突然行方をくらましたため、元に戻す方法が分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

デフォルトエンコーディングがUTF-8やWindows-31Jになっていることはどうやって確認したんですか? public class FileEncoding { public static void main(String[] args) { System.out.println(System.getProperty("file.encoding")); } } このプログラムを、Eclipseを使わずに実行したらどんな結果になりますか? WTPというのは使ったことがないのでどこにどんな設定があるのか分かりません。

kotoby2003
質問者

お礼

あはは・・・ 鋭い指摘でした。 上記のコードをEclipse上で実行したら、UTF-8が返ってきましたが、Eclipseの外(コマンドライン)で実行したら、MS932が返ってきました。 Eclipseの問題なんですね・・・。 ちなみに、デフォルトエンコーディングを確認した方法は、デバッグモードを使っただけです。 Eclipseの設定で、デフォルトエンコーディングを変える方法についてですが・・・ プログラムごとであれば、実行の構成の「共通」タブでエンコーディングを変更できることはわかりました。 が、全体的な設定はどこでやっているのかわかりませんでした。 →と思ったら、どうも、「テキストファイル・エンコーディング」(プロジェクトプロパティのリソース)を引き継ぐようです。さらにこれは、(昔と違って探すのに苦労しましたが) ウィンドウ>設定>一般>ワークスペース にありました。 みなさん、どうもありがとうございました。

その他の回答 (2)

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

そんなときのために デフォルトを使わずに 直接指定するのをお勧めするわ。 可能な限り環境に依存しない実装が望ましいわ。 LocaleやTimezoneもそうよね。 #1さんのを利用して 起動時に指定するのもひとつの手よね。

kotoby2003
質問者

お礼

おっしゃるとおりです。 最終的な解決策は、きちんと文字コードを明示することです。 開発環境はWindows、実行環境はLinuxであり、文字コードはシフトJISであるため、これは必須なことでした。 ただ、メンバのマシンによって設定が違うのは余計な混乱を招く(招いた)ため、できるなら統一したいと思って質問しました。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.1

> WindowsXPなら、UTF-8がデフォルトのはずです。 XPでも7でも、Windowsの日本語環境ならばデフォルトエンコーディングはMS932が普通です。今どきのLinuxならばUTF-8でしょうが。 javaの起動オプションで -Dfile.encoding= を指定していたりしませんか?

kotoby2003
質問者

お礼

あら。 WindowsXPからUTF-8になった、というのは思い違いでしたか・・・。 そんなことが書かれたページを見たような気がして、信じちゃいました。 javaの起動オプションもいじってないと思うんですが・・・。 Eclipse上でWTPを使ってTomcatを起動しています。 とすると、起動オプションはこのTomcatの起動オプションで設定する、ということであってますよね? そのマシンを使っているメンバは、こんな設定をいじれるような知識はなさそうなので、変更したとは思えないんですが。