- PR -

JAVAのコンパイルで文字化けが発生します。

投稿者投稿内容
fwix
会議室デビュー日: 2004/04/07
投稿数: 7
投稿日時: 2004-04-07 16:41
Solaris8でJAVAソースをコンパイルすると日本語が文字化けする現象が発生しています。

2台のうち、1台は文字化けせず、もう1台は文字化けします。コンパイル時のコマンドは、
javac -classpath <path> sourcefile で全く同じです。

それから3ヶ月ほど前に別のソースをコンパイルしました。コマンドは上記と同じです。
しかし、このときは2台ともに文字化けはしていません。

-encodingオプションを指定すればいいのかもしれませんが、自由にコンパイルできない
状況なので、いろいろと調査しているところです。
4回中1度だけ文字化けするというのが不可解です。

なにかアドバイスがありましたら、よろしくお願いします。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-04-07 16:50
ご認識の通り、システムデフォルト以外の方法でエンコードしたければ -encoding オプションをつければよいことになっています。
4回に1回だけ文字化けするっていうのはかなり特殊な現象ですが、まったく環境に変更がないのに発生するのでしょうか?それとも開発しながら時々発生するということでしょうか?
また「確実に4回に1回発生する」のか「4回に1回くらい発生する」のかも切り分けのヒントになるとおもいます。


一般的なプログラミングトピックとしてはコードには文字列をハードコードするのは良くないといわれています。properties ファイルや xml ファイルに外だしすることも検討してみてはいかがでしょうか?

[ メッセージ編集済み 編集者: インギ 編集日時 2004-04-07 16:51 ]
fwix
会議室デビュー日: 2004/04/07
投稿数: 7
投稿日時: 2004-04-07 18:06
回答ありがとうございます。
変更を加えたのはソースファイルだけで、環境は全く変わっていません。
コンパイルを実施したのが4回だけでそのうち1回発生しました。

環境が変わっていないのに化けてしまうことがありえるんでしょうか。
例えばコンパイルするときにSolarisのrootユーザか一般ユーザか
ということは関係ないですよね?
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-04-07 18:21
ソースの編集もSolarisで行っているのでしょうか?
もしWindowsで編集 → ftp転送 → Solarisでコンパイルという形でしたら
ftp転送の段階で文字コード変換(Shift_JIS → EUC_JP)を行わなかった、
(あるいは行ってはいけないのに変換した)などの原因も考えられますよ。
fwix
会議室デビュー日: 2004/04/07
投稿数: 7
投稿日時: 2004-04-07 18:35
回答ありがとうございます。
編集はパソコン上で行い、FTPでサーバに持っていきました。その後、サーバ上でまた少し変更しています。
このへんが原因の可能性もあるんでしょうか?
Solarisサーバ上でソースを見て、化けていなかったので大丈夫だと思ったんですが。。
Cluster
ぬし
会議室デビュー日: 2003/03/06
投稿数: 289
お住まい・勤務地: 大阪
投稿日時: 2004-04-07 18:43
引用:

fwixさんの書き込み (2004-04-07 18:06) より:

コンパイルを実施したのが4回だけでそのうち1回発生しました。



同じソースを4回コンパイルして1回だけ文字化け?
4本のソースをコンパイルして1本だけ文字化け?

どちらなのかで、だいぶ話が違うと思いますが
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-04-07 18:45
Solarisサーバ上のツールが自動でshiftjisに対応していて
ソース見ても問題なかったとかも考えられますよね?

_________________
fwix
会議室デビュー日: 2004/04/07
投稿数: 7
投稿日時: 2004-04-07 18:47
返信ありがとうございます。
ソースは2本です。
1本目のソースは、マシン1、マシン2どちらでコンパイルしても化けません。
2本目のソースは、マシン1では化けますが、マシン2では化けません。

変更したのはソースファイルだけで、マシン1、2ともSolaris8で環境は同じはずなのですが。。
不思議です。

スキルアップ/キャリアアップ(JOB@IT)