- - PR -
改行コードをに変換したい
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-01 21:47
こんにちは、
お世話になっております。 データベースに、 INSERT INTO TEST VALUES('あいういお かきくけこ'); のように改行してINSERTしたデータを、 HTMLで表示すると改行されていません。 そのため、 改行コードをHTMLの<br />に置換したいのですが、 うまくいきません。 Javaのコードは、 String str; (ここにデータベースから取り出したデータが代入されていて) str = str.replaceAll("\n", "<br />"); と、書いて、置換したつもりなのですが、 HTMLで表示すると、 あいうえお<br />かきくけこ と改行されずに表示されてしまいます。 どのようにコードを書いたらいいのでしょうか? データベースは、H2 Database というデータベースを使っています。 よろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-10-01 21:57
・データベースから改行を含むデータを取り出す
・データベースはH2 ・改行を改行タグに置換する ・改行タグを含む String を html で表示する 、と4つの条件が揃って問題が発生するように書いてありますが再現条件となっているのはどれでしょうか? 現象が発生するのに必要な条件はもう少し少ないような気がします。 焦点を明確にするためにもまずは何が起因して現象が発生しているのか絞り込んではいかがでしょう。 [ メッセージ編集済み 編集者: インギ 編集日時 2008-10-01 21:58 ] | ||||||||
|
投稿日時: 2008-10-01 23:03
各処理前後でデバッグ文を入れることは可能でしょうか?
そうすれば、大体どこの処理で問題が起こっているのか、が特定できます。 1)DBインサート前後 DBに入れる直前のデータを表示させると改行は入ってますか? DBに入れた後に、selectなどでデータを取り出したときに改行は入ってますか? 2)replaceAll前後 replaceAllする直前の文字列には改行が含まれていますか? 改行が含まれている場合は、それは本当に"\n"ですか? replaceAll後の文字列には"<br/>"が含まれていますか? このあたりを調べてみるとよいかもしれません。 そんなこと言われなくても、とっくに調べてるよ! という内容でしたらごめんなさい。 | ||||||||
|
投稿日時: 2008-10-01 23:09
ブラウザでの表示がそうなるのであれば、HTMLに<pre>が残っていませんか? | ||||||||
|
投稿日時: 2008-10-02 09:27
もしかして、HTMLエンコードされて出力されているような気も。 表示されたhtmlのソースを見てみたら、 タグの"<"が"<"に、">"が">"になっていたりしませんか? | ||||||||
|
投稿日時: 2008-10-02 11:24
HTMLがわかるなら、ブラウザのソースの表示で、
何が起こっているかが理解できるはず。 まずは、ソースを見て、改行周りがどう出力されているかを見てみましょう。 そのソースを元にブラウザは表現を変えているだけです。
どう出力しているんですか? | ||||||||
|
投稿日時: 2008-10-03 10:09
インギさん、84さん、GENZOさん、Tramさん、
かつのりさん、 ご返信ありがとうございました。 > もしかして、HTMLエンコードされて出力されているような気も。 > 表示されたhtmlのソースを見てみたら、 > タグの"<"が"<"に、">"が">"になっていたりしませんか? そのとおりです。 表示されたHTMLのソースには、 あいうえお <br />かきくけこ と、表示されます。 どのように対処すればいいでしょうか? > 2)replaceAll前後 > replaceAllする直前の文字列には改行が含まれていますか? > 改行が含まれている場合は、それは本当に"\n"ですか? "\n" かどうかは、わからないのです。 調べ方がわかりません。 ご教授いただけたらありがたいです。 よろしくお願い致します。 [ メッセージ編集済み 編集者: kokansetu 編集日時 2008-10-03 10:29 ] [ メッセージ編集済み 編集者: kokansetu 編集日時 2008-10-03 10:34 ] | ||||||||
|
投稿日時: 2008-10-03 11:23
ですから、どうやって出力しているのですか? 標準のServlet/JSPだけなら、勝手にエスケープしません。 何かしらのフレームワークやライブラリを使っているため、 タグのエスケープを行ったりしているのでしょう。 環境を書くようにしましょう。
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#contains(java.lang.CharSequence) 最低限、Stringクラスなどのよく使うクラスのAPIドキュメントは、 一通り目を通しておきましょう。 流し読みでも、こんなことができるのかというヒントが得られますよ。 |