WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:JavaServlet特殊記号について

0:[投稿] RaspBerryJam [2003/01/28 16:51 ][環境:win2K UNIX Java]

お世話になっています
HTMLより入力した機種依存文字(○に1やギリシア文字(株)等)を
request#getParameterValues(String)
で取得すると文字化けが起きます
調べた所エンコードすればいいのはわかったのですが
例では
new String(resultSet.getString(1).getBytes("8859_1"),"MS932")
配列では無い方法しかありませんでした
既にgetParameterValues()をした時点で化けてしまっている模様です
配列全てをエンコードして、取得する事は不可なのでしょうか?
どなたかご教授願います


1:[関連] RaspBerryJam [2003/01/28 16:58 ]

すみません補足です
setCharacterEncoding(String)は使用不可です
多分ヴァージョンが古い為コンパイルエラーが出ます


2:[回答] ななし [2003/01/30 15:48 ]

String[] str = request.getParameterValues(String);
for (int i; i<str.length; i++) {
   str[i] = new String(str[i].getBytes("8859_1"), "MS932");
}

> 配列では無い方法しかありませんでした
配列でどう使えばいいか考えれ(;´Д`)


3:[回答] RaspBerryJam [2003/01/31 10:37 ]

ななしさんレスありがとうございます
*−引用−*
String[] str = request.getParameterValues(String);
for (int i; i<str.length; i++) {
  str[i] = new String(str[i].getBytes("8859_1"), "MS932");
}
*−引用終わり−*
やはりこの方法が普通に考え付きますよね
この方法でも以下の方法でもダメでした

環境はAIX,WASを使用しています
JSPで<%@ page contentType="text/html; charset=Cp943C"%>
と設定してもいる事からCp943CでServletに飛んできています
(System.getProperty("file.encoding")で確認済)

そのため
str[i] = new String(str[i].getBytes("8859_1"), "Cp943C");
としても文字ダンプは3fに変換されてしまっています
MS932でも、JISAutoDetectでもダメでした
どこかのサイトでJava Stringは強制的にunicodeに変換する
と言うような事を見ました(当然ですが……)
getParameterValuesをした時点で既に文字化けしているのでは?
と考え、テストと言う事で
new String(request.getParameter(key).getBytes("8859_1"),"Cp943C")
と配列はおいておいて単体で試した所
二バイト文字は全て3fになってしまいました
new String(request.getParameter(key).getBytes("Cp943C")
とISOに変換せずにやったところ
二バイト文字は治りました
『あ』のダンプが3042となっていました
あれ??なぜ UTF-16 になっているのかな?という次第です。

Java(tm) House様の検索で
特殊記号
文字化け
Cp943C
で引っかかた文字化け修正方法は一通りやったのですが治りません……
(機種依存文字が化けたまま)

まだまだ悩んでいますので
追加助言や、別の方法がありましたらお知らせしてくださると幸いです


4:[完了] RaspBerryJam [2003/02/04 09:53 ]

不本意ですが
HttpUtils.parsePostData メソッドを使用しました

一応完了に致します

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World