- - PR -
ファイルダウンロード時に文字化け
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-03-14 13:16
ダウンロードするファイル名に
UTF-8(Unicode)からShift-JISに文字エンコードを行った際に、文字化けが発生する特殊文字(〜、−など)が含まれていた場合文字化けが発生してしまいます。 <文字エンコードを行っている処理の抜粋> 下記の処理を行った際に、文字化ける fileName = new String(fileName.getBytes("Shift-JIS"), "ISO8859_1"); 何か回避方法は、ありませんか すみませんが、よろしくお願いします。 動作環境 DB Oracle10g (文字コードUTF-8) JSP (文字コードUTF-8) [ メッセージ編集済み 編集者: KOUJI 編集日時 2007-03-14 13:28 ] [ メッセージ編集済み 編集者: KOUJI 編集日時 2007-03-14 13:29 ] |
|
投稿日時: 2007-03-14 13:47
まずjavaのバージョンを書きましょう!
Java1.3.x/1.4.0とJava1.4.1以上でUnicode文字列のマッピングが変更されています。 マッピングの違いなどは以下を参考にするのがいいと思います。 http://www.ingrid.org/java/i18n/encoding/ja-conv.html |
|
投稿日時: 2007-03-14 14:26
>フライトさん
すみません バージョン:j2sdk1.4.2_13 です。 |
|
投稿日時: 2007-03-14 15:45
リンク先を見て頂ければ分ると思いますが、Shift-JIS,Unicode間に
一部文字にマッピングの違いがあるので文字化けが発生します。 文字化けを回避したい場合は、それを修正してあげると文字化けは 発生しないと思われます。 public static String UnicodeConv(String line) { StringBuffer sb = new StringBuffer(); char ch; for (int i = 0; i < line.length(); i++) { ch = line.charAt(i); switch (ch) { case {変換したい文字領域} : ch = {正しいマッピング領域}; break; } sb.append(ch); } return new String(sb); } |
|
投稿日時: 2007-03-14 22:15
単に「文字化けが発生します」ではなくて、
UTF-8で(A)の文字がShift_JISで(B)にエンコードされることを期待しているのだが、 実際には(C)になってしまう。 という風に分析しないと、原因には到達できませんよ。 「Windows-31J」を指定すべき所で「Shift_JIS」を指定してるので化けているだけ、かもしれません。 |
|
投稿日時: 2007-03-15 10:25
私が先日投稿したのとほとんど同じ表題ですね。
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=36881&forum=12&start=0 ですが、ブラウザの種別によっても挙動は違います。 参考にされてはどうでしょう。 |
1