- - PR -
Windows-31JとShift_JIS
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-06-29 13:11
おっと、失礼しました。
送信側では、s.getBytes("Shift_JIS") 受信側では、new String(decoded, "Windows-31J") としてみてください。 サイト1とサイト2で、SJISっぽい状態では同じコードポイントだったものがUnicodeになった時点で違うものになっているので、もとのSJISっぽい状態に戻してやりとりする必要があります。 | ||||
|
投稿日時: 2005-06-29 16:00
ukさん、ご返信いただきありがとうございます。
また、レスが遅くなってしまい大変もうしわけないです。m(_|_)m > POSTで送るのであれば、こんな面倒なことをしなくても普通の文字列として送り、受け側の > サーブレット側でリクエストに適切なエンコーディングで設定すればよいと思うのですが、 > このような実装にしているのは何か理由があるのですか? これにはちょっとしたわけがありまして・・・。 サイト1からサイト2のサーブレットに送りつけるではなく、いったんJAVAアプリケーションで開発してから、そのクラスだけをサイト1に持っていき、URLConnectionでPOSTメソッドで送信しておりました。 この段階で、文字化け等発生することがなく、うまく動いていたのですが、これをサイト1に移行し、サイト1サーブレット->サイト2サーブレットで通信させると、すべての日本語がきれいに化けました。 結局どこの段階で文字化けが発生しているのか、うまく特定することができずに、BASE64でエンコードして投げるという、逃げ道に走ってしまいました。 | ||||
|
投稿日時: 2005-06-29 16:15
スフレさん、気長にお付き合いいただき本当にありがごうざいます。m(_|_)m
> 送信側では、s.getBytes("Shift_JIS") > 受信側では、new String(decoded, "Windows-31J") なるほどなるほど。 ちょっとこれでためさせていただきますね。 | ||||
|
投稿日時: 2005-06-29 21:51
そのクラス内で、どのようにPOSTパラメータを送信しましたか? 明示的にエンコーディングを 指定して送るようになっていたでしょうか。Javaの文字列と外部(ネットワーク、ファイル、 DB)の文字列データとを相互にやり取りする場合は、エンコーディングを明示するのが原則です。 |