HTMLファイルのフォームのパラメータをサーブレットに引渡し、サーブレット内で、ファイルに出力(CSV形式)したいのですが、日本語が含まれていると文字化けしてしまいます。
文字化け防止の為に下記のようなコードを書いているのですが、うまくいきませんでした。(フォームの"name"というパラメータをサーブレットに渡します。)
-----------------------------------------------------
(サーブレットのファイルより一部抜粋)
//変数&定数の宣言
private static final String csvFile = "/home/csvFile.csv";
String name;
FileWriter fw = new FileWriter(csvFile);
PrintWriter pw = new PrintWriter(fw);
//☆文字化け防止コード
name = request.getParameter("name");
name = new String(name.getBytes("8859_1"),"SJIS");
//ファイルに出力
pw.print(name + ",");
pw.close();
-----------------------------------------------------
上記のようなコードの書き方だと駄目でしょうか?
ちなみに"SJIS"を"euc-jp"、"JisAutoDetect"に変えてもうまくいきませんでした。
実行方法は
(1).windowsでサーブレットをコンパイルし、
(2).(1)で出来たクラスファイルをLinuxに転送し、
(3).Linux上でTomcatの再起動をして実行しています。
もし何か分かることがありましたらご教授お願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
WEBのフォームに入力される文字は通常base64エンコードされていますので、
base64デコードする必要があります。
漢字で「あいう」と入っている場合は、jisであれば82A082A282A4という16進コードであらわされます。これが「%82%A0%82%A2%82%A4」という文字列に変換されます。
これらのことは、考慮されていますか?
No.2
- 回答日時:
PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileWriter(csvFile), "SJIS"));
にしてみたらどうでしょう?
"SJIS"の部分を"euc-jp"にすればEUCで書き込まれると思います。
No.3
- 回答日時:
"8859_1"という、欧米向けのエンコーディングを経由しているのが
いけないのだと思います。
FileOutputStream fos = new FileOutputStream(csvFile);
OutputStreamWriter osw = new OutputStreamWriter(fos, "SJIS");
name = request.getParameter("name");
osw.write(name, 0, name.length());
osw.write(",", 0, 1);
osw.close();
ではどうでしょう。
上のoswを引数にしてPrintWriterのインスタンスを作る手もあります。
yuxpさんの回答に近くなりますが。(yuxpさんの回答自体は、
FileWriterを引数に取るOutputStreamWriterのコンストラクタはない
と思いますが。)
また、madmanさんの仰っているのはURLエンコーディングのことだと
思います。考慮しておくのは必要ですが、requestのクラスが書いて
いないので、とりあえず解決済みのこととして扱いました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Java java final 1 2022/06/10 22:49
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- Java JavaのSingletonパターンのprivateの持つ意味が分かりません。 5 2022/06/12 10:38
- Visual Basic(VBA) シートをコピーする下記記述でダイアログを用いた記述がわかりません?( A = Dir(ThisWor 4 2022/08/22 12:26
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
requestの値が削除されません…
-
StrutsでJSPからListを受け取り...
-
全取得したデータをjspで順番に...
-
<s:iterator>の値をリストで取...
-
JSPにて、変数を利用してフォン...
-
PropertyNotFoundException解決...
-
hiddenの値が期待した値で取得...
-
データベースに変数の値を挿入
-
Java Struts ~に対するゲッタ...
-
サーブレットjspで勤怠スケジュ...
-
JSPでImportエラーになります
-
Javaで改行などが出来ないのです。
-
C言語のポインターに関する警告
-
カタカナの小文字を大文字に変...
-
java キーボード入力された値の...
-
JSPやサーブレットでSystem.out...
-
flush()とclose()について
-
javaで質問です。 文字列2023/2...
-
ループ処理の際、最後だけ","を...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
オブジェクトの中のプロパティ...
-
JSPでImportエラーになります
-
hiddenの値が期待した値で取得...
-
StrutsでJSPからListを受け取り...
-
requestの値が削除されません…
-
Java Struts ~に対するゲッタ...
-
PropertyNotFoundException解決...
-
全取得したデータをjspで順番に...
-
<s:iterator>の値をリストで取...
-
データベースに変数の値を挿入
-
JSPにて、変数を利用してフォン...
-
JSPでDBからデータ読み込みブラ...
-
No such validation エラー
-
iterateで受け取った値を処理に...
-
StrutsのforEachについて
-
JSPからServletに、テーブルに...
-
サーブレットjspで勤怠スケジュ...
-
JSFタグ<h:dataTable>でヘッダ...
-
javaの環境変数の%CATALINA_HOM...
-
WebWork(struts2)でのパラメー...
おすすめ情報