[java] Windowsで書いたソースコードをLinuxに持っていったときの文字化け対策

| コメント(0) | トラックバック(0)
Windowsでソースコードを書くと、デフォルトではShift_JISで保存される。しかし、Linuxのデフォルトの文字コードはShift_JISではなく、EUCであるので文字化けが起こる。

JAVA仮想マシンでは、unicodeが使われているのだが、これは、コンパイル時に変換している(と思う。

つまり、windows上でjavacを行うと、コンパイラが「windowsだからきっとソースはShift_JISで書いているんだな」と自動で判断してくれる。
同様に、Linux上でjavacを行うと、コンパイラが「LinuxだからきっとソースはEUCで書いているんだな」と自動で判断してくれる。

だが、windows上で作成したソースをLinux上でコンパイルしようとすると、勘違いが起こり、文字化けしてしまう。


単純に文字化けするならいいのだが、/*や""と日本語が連続になっていると、一緒に化けてしまい、コメントアウトなどすらうまくいかないようだ。


これを改善する方法は、2つ (だけ思いついたぞ!)

1つ目が、文字コードをEUCに変換する方法。
shellでnkfコマンドを用い
nkf -e 変換したいファイル名 > 変換後のファイル名

とすればよい。ここで、変換前と変換後のファイルで同じパスを指定すると、中身が消えるので、上書きの場合は、
nkf --overwrite -e 変換したいファイル名
と--overwriteオプションをつけてやる。
また、eucに変換する時は-eだが、utf-8に変換する時は-uではなく-wなので注意


2つ目が、コンパイラに、LinuxだけどShift_JISだよと教えてあげる方法。
javacコマンドに-encodingオプションをつければよい
javac -encoding SJIS コンパイルしたいファイル

<追記>
2008/4/5
nkfの--overwrite、-wオプションを追記

トラックバック(0)

トラックバックURL: http://blog.isocchi.com/MovableType/mt-tb.cgi/201

コメントする

このブログ記事について

このページは、isocchiが2007年11月28日 19:07に書いたブログ記事です。

ひとつ前のブログ記事は「[mobile] 携帯用充電器で充電出来る充電器」です。

次のブログ記事は「[AIR] Buzzwordのバージョンが上がった・・・のかな?」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

Powered by Movable Type 5.0