- PR -

【Struts】multipart/form-data形式の文字化け

1
投稿者投稿内容
さやべえ
常連さん
会議室デビュー日: 2003/03/13
投稿数: 33
投稿日時: 2003-12-25 19:43
さやべえです。

Struts1.1でmultipart/form-data形式のリクエストに含まれるリクエストパラメータ
のうち日本語の値を持つものが文字化けしてしまい、いろいろと調べていますが、
解決できずに困っています。

JSPファイルでは下記のようにUTF-8で指定しています。
コード:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">



また、Action内でFormからデータを取得する直前には
コード:
request.setCharacterEncoding("UTF-8");


を指定しています。

また、ActionFormでは
コード:
public String getCompanyName() {
  return companyName;
}

public void setCompanyName(String companyName)
  throws UnsupportedEncodingException {
  this.companyName =
    new String(companyName.getBytes("ISO-8859-1"), "UTF-8");
}



に行っています。
Tomcatのバージョンは4.1.24(Eclipseとの絡みで)
JDKはj2sdk1.4.2_02です。

他の方は、問題なくデータを取得できているのでしょうか?
お返事頂ければ幸いです。
ぽん
大ベテラン
会議室デビュー日: 2003/05/13
投稿数: 157
投稿日時: 2003-12-25 20:21
問題解決になりそうなページです。
ちば
大ベテラン
会議室デビュー日: 2003/02/14
投稿数: 114
お住まい・勤務地: 都内勤務
投稿日時: 2003-12-25 20:28
さやべえさん

はじめまして、ちばといいます。

現在Strutsを用いた開発をしていますが、全くといっていいほど
文字化けは起こしていません。

開発環境もさやべえさんと殆ど同じです。

具体的な例を1つでも挙げてもらえれば何かわかるかもしれません。
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2003-12-25 20:39
引用:

さやべえさんの書き込み (2003-12-25 19:43) より:
コード:
public void setCompanyName(String companyName)
  throws UnsupportedEncodingException {
  this.companyName =
    new String(companyName.getBytes("ISO-8859-1"), "UTF-8");
}




なんでこんな変なことやってるんでしょう?理解して書かれてますか?
これは昔ServletRequest#setCharacterEncoding()が無かった時代の書き方です。

今は普通に書きましょう。
コード:
public void setCompanyName(String companyName) {
  this.companyName = companyName;
}


さやべえ
常連さん
会議室デビュー日: 2003/03/13
投稿数: 33
投稿日時: 2003-12-25 21:16
さやべえです。

http://kvasir.skirnir.net/software/product/multipart-filter

multipart/form-dataの場合の上記と同様のフィルターが機能するように
実装して対応しました。

setterでバイト変換の処理はmultipart/form-dataではない普通のフォーム
でValidateで入力画面に戻った際に、文字化けするのでこう入れています。

本当は正しい対応方法があるかと思いますが、、これでヨシとしています。

回答ありがとうございました。
kito
ベテラン
会議室デビュー日: 2003/03/24
投稿数: 59
お住まい・勤務地: Osaka
投稿日時: 2003-12-25 21:42
あ〜私の勘違いです。すみませんm(_ _)m
Strutsはさほど詳しくないので見当違いだったかもしれません。

ですがStrutsであのような妙な変換が必要という話もあまり聞いたことがないので、
引用:

さやべえさんの書き込み (2003-12-25 21:16) より:

setterでバイト変換の処理はmultipart/form-dataではない普通のフォーム
でValidateで入力画面に戻った際に、文字化けするのでこう入れています。


もしかしてこちらの現象の方がおかしいということはありませんか?
1

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