- PR -

windows → Linux で文字化け

1
投稿者投稿内容
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2003-03-25 23:46
現在、画像を半自動的に生成してくれるクラスライブラリを使用しています。

画像内に書ける文字はタイトルなどに限られていて、
特定のメソッドを使用して文字列をセットします。

アルファベットだけならもちろん大丈夫。
日本語が入っても Windows なら問題なし。
ところが Linux サーバーにあげた途端、日本語が化ける。
という状況です。

ならば Windows と同じ文字コードにしてやろうと思って、
1.Windows で System.getProperty("file.encoding") → 結果:MS932
2.Linux で CATALINA_OPTS="-Dfile.encoding=MS932"
3.実行 → やっぱり文字化け・・・。

あれっ!?
セットする文字はソースの中にハードコードしているから Unicode のはずなんだけどな〜?

確認のため dump() メソッドなるものを作成し、セットする文字列を 16 進数で表示。
結果:やっぱり Unicode だ。

もう一度 Windows に戻してテストしてみる。
Windows の場合は Unicode でセットしても化けない。

同じ Unicode でセットしているのにどうして Linux だけ化けるのか〜


ちなみに、以下のような環境です。

Windows → J2SE 1.4.0, Tomcat 4.1.12, Eclipse 2.0.2
Linux → J2SE 1.4.1, Tomcat 4.1.18
H2
ぬし
会議室デビュー日: 2001/09/06
投稿数: 586
お住まい・勤務地: 港
投稿日時: 2003-03-26 06:37
もしかしてこれと同じですか!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=383&forum=12&start=0

この場合はLinux上でコンパイルすれば直りました。あまり重要でなかったので、未だに原因が分かっていません。分かりましたら教えていただけるとうれしいです。
アレク
ベテラン
会議室デビュー日: 2002/10/23
投稿数: 97
投稿日時: 2003-03-28 01:30
H2 さん、ありがとうございます。

引用:

もしかしてこれと同じですか!
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=383&forum=12&
start=0

この場合はLinux上でコンパイルすれば直りました。



う〜ん。確かに似てますね。

私なりにいろいろとやってみたんですが、やっぱり直らない。

まず、
Windows2000 → RedhatLinux(英語版)で駄目だったので、
windows2000 → TurboLinux (日本語版)で試してみました。

そうすると、TurboLinux の方では、文字化けしませんでした。

う〜ん。同じ Linux でも、日本語版なら大丈夫みたいだ。

TurboLinux のエンコーディングは EUC-JP だったので、
Redhat のエンコーディングも EUC-JP にしてみた。
やっぱ、文字化けなおらへん。

プログラム内で文字コードの変換が必要か?
でも、Windows2000 と TurboLinux では Unicode の文字列を
なんの変換も無しに、使ったけど文字化けしなかった訳だし。

この画像生成クラスの説明に、
「デフォルトエンコーディング依存なので日本語は文字化けする」とある。

"デフォルトエンコーディング依存"ってどういうこと?
export CATALINA_OPTS="-Dfile.encoding=MS932" じゃ駄目なのか!?

もしかして、こういうのが必要ってこと?↓

コード:
public String Encoding(String param)
{
   String character = System.getProperty("file.encoding");
   String str = new String(param.getBytes("UTF-8"), character);
   return str;
}


いや。多分違う。(かな?)
もしこれが必要であれば、Windows2000 や TurboLinux でも文字化けしたはず。

ということは、RedhatLinux が日本語のフォントに対応していないってこと?
あ〜。わからんくなってきた。
1

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