- - PR -
JSP(HTML)内で波記号「〜」を表示させる方法
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-15 16:12
すいません、画面上にFrom xxx 〜 TO xxxという文字を出力したいのですが
「〜」という記号が文字化けして「?」と表示されてしまいます。 簡略化すると内容はこんな感じなのですが↓ <%@page pageEncoding="Shift_JIS" contentType="text/html; charset=Shift_JIS" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> </head> <body> From xxx 〜 TO xxx </body> </html> どうしたらうまく「〜」が表示されるでしょうか。IEを使用しております。 | ||||
|
投稿日時: 2006-08-15 16:30
文字エンコーディング名にShift_JISではなくWindows-31Jを使用しましょう。
Windows-31Jは、MS932(Windows日本語標準文字エンコーディング)のJava名です。 Shift_JISとWindows-31Jでは、Javaアプリケーション側でUnicodeに変換されたときに 別の文字コードが割り当てられるため、Windowsでの〜をShift_JISで出力すると 化けてしまいます。 | ||||
|
投稿日時: 2006-08-15 20:53
T2さん、ありがとうございます。
ところで、画面の「〜」はWindows-31Jでかまわないのですが、 仕様書としてDBとの兼ね合い上、画面入出力項目の値はSJISでということになってます。↓のように変更した場合、 <%@page pageEncoding="Shift_JIS" contentType="text/html; charset=Windows-31J" %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Windows-31J"> ActionForm側には影響ないでしょうか? ちなみにActionFormのresetメソッド内で↓処理を行ってます。request.setCharacterEncoding("Shift_JIS"); よろしくお願いします。 | ||||
|
投稿日時: 2006-08-16 13:12
実際試した結果どうでしたか?
問題の”〜”がActionFormのプロパティに関連付けられているとは 思えないので、文字化けせずに表示されればOKでしょう。 ただ、JSPの仕様としてはpageEncodingにもWindows-31Jを 指定するのが正しいような気がします。 しかるべき立場の人と相談してWindows-31Jを許してもらいましょう。 ちなみにServletRequest#setCharcterEncodingをActionForm#reset内で 行っているのを初めて見ましたが、今回の件とは関係有りません。 クライアントからの要求に対する文字エンコーディングを指定するものです。 #最後まで読まずに書いてしまったので修正しました。 [ メッセージ編集済み 編集者: おかもと 編集日時 2006-08-16 13:23 ] | ||||
|
投稿日時: 2006-08-17 01:37
はやめておいたほうが吉です。 filterの使用を検討ください。 なお、回答されていらっしゃる方々の指摘にあるような文字コードの問題についてはhttp://www.ingrid.org/java/i18n/encoding/に特に詳しいです。 | ||||
|
投稿日時: 2006-08-17 09:28
みなさん、ありがとうございます。
Windows-31Jに修正したところ問題なく波形〜が表示されました。 その他の項目も問題なく表示されています。 文字コード問題に対するサイトを紹介していただいてありがとうございました。 |
1