- PR -

byte[] → 文字列変換での文字化けについて(Linux時)

1
投稿者投稿内容
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-10-26 18:11
おせわになっています。
文字化け&文字コードについて質問させてください

現在以下のメソッドを使い byte配列を文字列に置き換える処理を
行っています。 その際、ローカル環境では問題なく動いていたものが
Linuxサーバ上で動作させた所文字化けとなってしまいました
コード:
	public static String byteToStr(byte[] bytes) throws Exception{
	    return new String(bytes,"MS932");
	}



サーバの文字コードはMS932にしてるとの確認をとれたのでコード指定は
MS932としていますが、Google検索もしてみたのですがうまく見つけれず
解決の糸口がみえません。

linux環境開発はほとんど経験ない為、どなたか情報もらえないでしょうか


環境
ローカル
eclipse3.0
JDK1.4.2_06

サーバ
Linux
Cosminexus
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2005-10-26 18:18
まず、このメソッドに渡しているバイト列をダンプして確認してみてはいかがでしょう。
同じバイト列を渡してローカル環境で実行しても同じ結果になるかと思いますのでこのコードに渡ってくる前を確認するのが良いかと存じます。
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-10-26 18:43
お世話になっています。
バイト単位でのダンプの取り方がやったことなかったのですが
String str = "あいうえお";
byte[] b = str.getByte();

for(int i=0; i<b.length; i++){
System.out.println("b["+i+"]: " + b[i] );
}
としたところ以下のように表示されました

b[1]: -94
b[2]: -92
b[3]: -92
b[4]: -92
b[5]: -90
b[6]: -92
b[7]: -88
b[8]: -92
b[9]: -86

また、文字列あいうえおをバイナリエディタで出したところ以下のように
82A082A282A482A682A8
なったため、バイト配列に落とした時点でおかしいということでしょうか?

文字コード表などとも見比べてみたのですが、対策がわかりません
この場合getByte時になんらかの対策が必要ということでしょうか?
n.w
大ベテラン
会議室デビュー日: 2003/07/15
投稿数: 126
お住まい・勤務地: 神奈川
投稿日時: 2005-10-26 18:56
無事(?)解決しました

getByteした時点で文字コードおかしいならと
str.getByte("MS932");

とし、取得する際も return new String(bytes, "MS932");
としてやることで文字化け回避できました。

ありがとうございました
1

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