- - PR -
JSPのテキストformからの日本語入力の文字化け
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2004-04-28 10:19
WindowsにてJSPのテキストのformに入力した日本語を
サーバー(Linux)でテキストファイルに保存したところ 日本語入力を行った文字が???????に化けて保存されます。 対策を教えていただけないでしょうか。 よろしくお願いいたします。 ちなみに両方のページのデリバティブには以下を指定しています。 contentType="text/html; charset=Shift_JIS" また、テキストファイル保存のプログラムには以下を記述しています。 <%! public String strEncode(String strVal, String encode) throws java.io.UnsupportedEncodingException{ if(strVal==null){ return (null); }else{ return (new String(strVal.getBytes("ISO-8859-1"),encode)); } } %> <% FileWriter fw=new FileWriter(application.getRealPath(strNam),true); BufferedWriter bw=new BufferedWriter(fw,10); StringBuffer sb=new StringBuffer(); sb.append(strEncode(strStory,"JISAutoDetect"));sb.append("\t"); bw.write(sb.toString()); bw.newLine(); bw.close(); %> | ||||
|
投稿日時: 2004-04-28 11:14
String test = new String(temp.getBytes("8859_1"), "shift-jis"); これはどうでしょう。 | ||||
|
投稿日時: 2004-04-28 12:28
そもそもLinux上でどのような文字コードで保存されることを想定されているのでしょうか。 まず、 <% FileWriter fw=new FileWriter(application.getRealPath(strNam),true); BufferedWriter bw=new BufferedWriter(fw,10); StringBuffer sb=new StringBuffer(); sb.append(strStory); sb.append("\t"); bw.write(sb.toString()); bw.newLine(); bw.close(); %> 以下のコードで保存してみてください。実行環境のロケールに対応した文字コードで保存される はずです。これがうまくいかなかったり他の文字コードで保存することを考えているのであれば、 どのような現象になっているか書き込んでください。 | ||||
|
投稿日時: 2004-04-28 12:30
教えていただいたように変更したのですが,やはりデータは??????に化けて
テキストファイルに格納されてしまいます. 何か間違っているでしょうか? String test = new String(strStory.getBytes("8859_1"), "Shift-JIS"); sb.append(test);sb.append("\t"); | ||||
|
投稿日時: 2004-04-28 12:50
ukさん
依然変わらず,日本語データ'あいうえおあいうえおあいうえおあいうえおあいうえお’は'?????????????????????'に化けテキストファイルに保存されます. | ||||
|
投稿日時: 2004-04-28 12:55
テキストファイルに保存したデータを,Windows上で利用する予定です.
はじめはWindowsから下記のフォームにデータを入力します. <textarea name="story" rows="50" cols="300"></textarea> | ||||
|
投稿日時: 2004-04-28 13:20
この結果からするとロケールが英語環境のようですね。ロケールに左右されずにエンコーディング を指定するのであれば、FileOutputStreamとOutputStreamWriterを使いましょう。 | ||||
|
投稿日時: 2004-04-28 13:40
「化ける」なら、化ける前のデータを見てから判断してください。
以前MLなどで発言していたときはよくこういうところを参照して ください、と回答していたんですが。 |http://java-house.jp/ml/ のスペシャルトピックス |「文字化け」を報告するときは文字列データのダンプを示してください [j-h-b:27929] * * * 以下はデータの内容にもよります。 内容としては未記入さんの方法が一般的ですが、(SJISの場合) 正確にはshift-jis じゃ無く、Shift_JIS(大文字小文字ではなく、 ハイフンとアンダーバーの違いが重要) です。 Javaのバージョンによっては shift-jis は無理だった気がします。 (エラーは出ていなそうなので問題ないでしょうが…) SJISの場合、と書いたのは、送られてくるデータがSJISじゃ無い 可能性があるからです。 パラメータをどのようにエンコードするかはブラウザ次第です。 大体、どうエンコーディングするかは (1)ページのエンコーディングと同じ。 (2)UTF-8固定 (3)上記(1)(2)を切り替える事ができる のいずれかです。 最近のブラウザはほとんど(3)だとは思います。 設定により UTF-8 で飛んできている、に1票。 | ||||
