• ベストアンサー

文字コードの問題??

いつもお世話になります。 常用漢字以外の漢字をコンテナTOMCAT4.4でJSPを動作さしてIE5.5で表示させようとしたのですが?となってしまいます。 しかし静的なHTMLファイルにすると正常に表示されます。 JSPヘッダーにShift_JIS指定にしているのですがJSPファイルにすると正常に表示されません。 どうしたら正常に表示されるようになるのでしょうか? よろしくおねがいします

質問者が選んだベストアンサー

  • ベストアンサー
  • covachan
  • ベストアンサー率38% (46/120)
回答No.5

ご説明ありがとうございます。 お返事送れましたが、私の方で簡単ですが試してみました。 で、結果としては以下のようになりました。 JSP(SJIS)に直接書き込み表示は○ JSP(SJIS)に<%%>タグで書き込み表示は○ JAVAファイルに埋め込みSJISでコンパイル○ JAVAファイルに埋め込みEUC_JPでコンパイル× といった感じでした。 私としてはSJISからEUCで処理される時に常用漢字ではないため マッピングが違うという問題が起きていると思うのですが その問題が何処で起きているか説明された文ではわかりません。 単にSJISで書かれたJSPファイルに埋め込みSJISで表示されるのであれば 問題はなさそうですし。 たとえばサーバーがEUCであったり(Linux等)、DBの処理がEUCで あったりすればそこで起きている可能性があると思います。 あとは、sasadoraさんの言われるように切り分けしてはいかがでしょうか?

すると、全ての回答が全文表示されます。

その他の回答 (5)

  • wogota
  • ベストアンサー率42% (66/154)
回答No.6

表示したい文字は、Microsoft機種依存文字のようです。 IMEパッドでは、音読み「ケイ」訓読み「かおりぐさ」と表示されています。 字体としては、草冠に「恵」の旧字体が入るものです。 Microsoft機種依存のため、ShiftJISのままだと、MacやPC UNIX等では 表示されない可能性があります。 (超漢字というTRON系OSには当然収録されていますが、ShiftJISを用いては 文字コード上表示できないと思います。) ただ、unicodeには収録されており、0x8559で表示されますので、 unicodeで表示するようにシステムを変更するか、 フォントをPNG等のイメージとして保持しておき、該当文字の箇所を そのフォントイメージに置き換えるといった作業が発生すると思われます。

すると、全ての回答が全文表示されます。
  • sasadora
  • ベストアンサー率68% (59/86)
回答No.4

文字化けするというのは、良くありますが、 どこで文字化けしてるのかはっきりさせましょう。 その漢字はどうやって出力しているのか教えてもらえますか? ・DBから取得した文字列を出力している  DBから取得した時点で文字化けしているとすれば、  JSPでいくら頑張っても、解消できません。  DBから取得する時点で対処するとか、設定が必要だったりします。 ・JSPのスクリプレット(<% %>)の外側に記述  <%@ page contentType="text/html;charset=Shift_JIS" %>  とか書いてますか? ・JSPファイルのスクリプレットの内側に書いていますか?  <%= "漢字" %> メンテナンス性は悪くなりますが、native2asciiを使って、 JSPをUnicodeエンコードに変換したら、正しく表示されるかもしれません。 native2asciiについては、参考URLを参照してください。

参考URL:
http://java.sun.com/j2se/1.4/ja/docs/ja/tooldocs/win32/native2ascii.html
すると、全ての回答が全文表示されます。
  • covachan
  • ベストアンサー率38% (46/120)
回答No.3

>最初にどういう字かをのせようとしたのですが、このOKWEB上でも一度 >フォームから送信してしまうと「・」という文字になってしまって >正常に表示できなかったので「常用漢字以外」という表現をつかわざるを >えなかったのです。 ええ、これは私も予想はしていました。ではなくて電話越しに自分の名前を伝えられるときはどうしますか?たとえば「優」と言う文字を説明するときは「にんべんに憂い」と説明しますよね?そういった説明が出来ないほどの漢字なのでしょうか?当用漢字と一括りにされていますが、ISO、SJISなど、それぞれ規格時に基準があいまいで文字セットも違いますしマッピングも違いますのでそういった意味では当用漢字という区切りはあまり適切ではありません。むしろその文字そのものを考えなければ話は前に進まないと思います。 おそらくwogotaさんの言われるように文字コード変換をせずに出すことで化けることは回避できると思います。

omaeha
質問者

補足

「・風」と書いて「ケイフウ」と読むらしいのですが、いままでで一度もみたことのない漢字です。 それいがいになんと読むかもわかりません。 人の名前らしいのですが、、、 草冠に虫という字に一番上に横棒と真中の四角のなかに横棒をいれて一番下に心です。 わかるでしょうか??

すると、全ての回答が全文表示されます。
  • wogota
  • ベストアンサー率42% (66/154)
回答No.2

実際に試したわけではないので「自信なし」です。 javaでは、内部の文字コードとしてunicodeを使用していますので、 HTMLを介して出力する際には文字コードをunicodeにすれば いいのではないかと思われます。 unicodeでの表示となるとUTF-8になると思われますが、 text/html;charset="utf-8" といったMIMEでいいのかどうかはわかりません。 ただ、この質問サイト(私の方では「教えてgoo」で見ています)で 質問入力のチェックで中黒が表示されるということはEUCに無い文字なのでしょうか。 例えば機種依存文字である場合、unicodeでも存在しないことが大いに ありえますので、その場合はunicodeにしても表示できないことがあります。

すると、全ての回答が全文表示されます。
  • covachan
  • ベストアンサー率38% (46/120)
回答No.1

最低限、なんと言う文字が表示されないのか書かれてはどうでしょうか? じゃなければ、再現させ確認することができませんよ。

omaeha
質問者

補足

最初にどういう字かをのせようとしたのですが、このOKWEB上でも一度フォームから送信してしまうと「・」という文字になってしまって正常に表示できなかったので「常用漢字以外」という表現をつかわざるをえなかったのです。 イメージ的にいうと古代の中国で使われていたような漢字でWindowsの日本語IMEをつかってひらがなから変換するのにもすんなりと変換できず一苦労というような文字です。 わかっていただけるでしょうか?

すると、全ての回答が全文表示されます。

関連するQ&A