- PR -

Windows-31JとShift_JIS

投稿者投稿内容
スフレ
ぬし
会議室デビュー日: 2005/05/27
投稿数: 281
お住まい・勤務地: 東京
投稿日時: 2005-06-29 13:11
おっと、失礼しました。
送信側では、s.getBytes("Shift_JIS")
受信側では、new String(decoded, "Windows-31J")
としてみてください。

サイト1とサイト2で、SJISっぽい状態では同じコードポイントだったものがUnicodeになった時点で違うものになっているので、もとのSJISっぽい状態に戻してやりとりする必要があります。
アックリー
会議室デビュー日: 2005/06/28
投稿数: 6
投稿日時: 2005-06-29 16:00
ukさん、ご返信いただきありがとうございます。

また、レスが遅くなってしまい大変もうしわけないです。m(_|_)m

> POSTで送るのであれば、こんな面倒なことをしなくても普通の文字列として送り、受け側の
> サーブレット側でリクエストに適切なエンコーディングで設定すればよいと思うのですが、
> このような実装にしているのは何か理由があるのですか?
これにはちょっとしたわけがありまして・・・。
サイト1からサイト2のサーブレットに送りつけるではなく、いったんJAVAアプリケーションで開発してから、そのクラスだけをサイト1に持っていき、URLConnectionでPOSTメソッドで送信しておりました。
この段階で、文字化け等発生することがなく、うまく動いていたのですが、これをサイト1に移行し、サイト1サーブレット->サイト2サーブレットで通信させると、すべての日本語がきれいに化けました。
結局どこの段階で文字化けが発生しているのか、うまく特定することができずに、BASE64でエンコードして投げるという、逃げ道に走ってしまいました。
アックリー
会議室デビュー日: 2005/06/28
投稿数: 6
投稿日時: 2005-06-29 16:15
スフレさん、気長にお付き合いいただき本当にありがごうざいます。m(_|_)m

> 送信側では、s.getBytes("Shift_JIS")
> 受信側では、new String(decoded, "Windows-31J")
なるほどなるほど。
ちょっとこれでためさせていただきますね。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2005-06-29 21:51
引用:

アックリーさんの書き込み (2005-06-29 16:00) より:
サイト1からサイト2のサーブレットに送りつけるではなく、いったんJAVAアプリケーションで開発してから、そのクラスだけをサイト1に持っていき、URLConnectionでPOSTメソッドで送信しておりました。
この段階で、文字化け等発生することがなく、うまく動いていたのですが、これをサイト1に移行し、サイト1サーブレット->サイト2サーブレットで通信させると、すべての日本語がきれいに化けました。


そのクラス内で、どのようにPOSTパラメータを送信しましたか? 明示的にエンコーディングを
指定して送るようになっていたでしょうか。Javaの文字列と外部(ネットワーク、ファイル、
DB)の文字列データとを相互にやり取りする場合は、エンコーディングを明示するのが原則です。

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