「Tokyo Railways 2」の開発版公開に向けて準備の真っ最中です。
公開用パッケージを作ろうと思い、アイコンを作ったのですが、それが上の画像です。
それで、Windows 7をサーバーにして、クライアントとして、インターネット経由でMac OS X、LAN経由でUbuntuを接続してみたら問題発生。Mac OS X環境は普通に表示されるのですが、Ubuntuは文字化けして表示されます。
Eclipseでテスト実行している時には起きなかったのに、パッケージを作って動かすと文字化けするというのは、ついこの前にリプレイ機能のテストでも起きてたので、すぐに原因がひらめきました。これは通信データを出力する時に文字コードを指定していないからです。なんで、WindowsとMac OS Xがちゃんと表示さるのかというと、両方共デフォルト文字コードがシフトJISだからです。でもUbuntuはUTF-8、テスト実行している時の開発環境はOSに関係なくUTF-8がデフォルト文字コードだからこの問題は起きてなかったんですよ。
String.getBytes()とInputStreamReader()の引数でちゃんと文字のエンコードを指定するなんていうのは、Javaプログラムの基本中の基本ですよねえ。自分ではベテランだと思っていたけど、まだまだ修行が足りないようです。
幸い、現象を見た瞬間に原因がわかってしまったので、あっという間に修正が完了し、再度パッケージを作り直したらちゃんと直ってました。
やれやれです。これで残る作業はマニュアルの更新のみ。今頑張ってますんで、もうちょっとお待ちください。
0 件のコメント:
コメントを投稿