- PR -

JSPのテキストformからの日本語入力の文字化け

投稿者投稿内容
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-04-28 14:03
引用:

JWさんの書き込み (2004-04-28 13:40) より:
「化ける」なら、化ける前のデータを見てから判断してください。


確かにPOSTされたデータを受け取るところで既に文字化けしている可能性もありますね。
まず、POSTされたデータをそのまま出力してみて、ちゃんと受け取れているかどうか確認する
ところから始めた方がいいですね。

そこで文字化けしているようならまずその部分から直す必要がありますね。
#JSPだとHttpServletRequest#setCharacterEncodingを使えないなあ
ぎんが
常連さん
会議室デビュー日: 2003/09/09
投稿数: 24
投稿日時: 2004-04-28 14:47
POSTされたデータを受け取るところで既に文字化けしていました。
下記のプログラムにより
あいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえあいうえ

???¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢???????¢????
と表示されました。
対策をご教授いただけないでしょうか。


<%@ page contentType="text/html; charset=Shift_JIS"
import="java.io.*,java.util.*,java.text.*" %>
<html>
<head><title></title></head>
<body>
<%
String strStory=(String)request.getParameter("story");
%>
<%=strStory %>
</body>
</html>
JW
常連さん
会議室デビュー日: 2004/01/14
投稿数: 49
投稿日時: 2004-04-28 16:39
|「文字化け」を報告するときは文字列データのダンプを示してください
というのは無視されていますか。

それはともかく、(?の文字数からして)UTF-8でデータが来ているようなので、
そういうデータが来ることを想定し、自分の作っているシステムでどうすべ
きか検討する必要があります。

先にも書いたように、ブラウザの設定などで
・ページのエンコーディング(この場合はShift_JIS)で来る
・UTF-8で来る
という事がありえます。

なので、「使う人は誰か」によって、同じ画面で同じデータを入れても
違うデータが来る可能性を考慮していなければ意味はありません。

一般に開放するようなWebアプリなら当然考慮しなければなりませんし、
自分だけしか使用しないようであれば、とりあえずプログラムを改修
せずともブラウザの設定だけで直ることも考えられます。
社内向けシステムであればブラウザが統一されているか、設定が統一
されているか(統一できるか)も踏まえて検討することになるでしょう。

...

単に「UTF-8で来る」からそれに対応したい、ということであれば、
String test = new String(strStory.getBytes("8859_1"), "Shift-JIS");
の Shift_JIS を UTF-8 に置き換える等。

SJISで来てもUTF-8で来ても対応するならhiddenか何かで特定の文字を送り、
サーバ側でその文字がどういうコードで送られているか判定してみるとか。

[ メッセージ編集済み 編集者: JW 編集日時 2004-04-28 16:40 ]

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