• ベストアンサー

CGI.pmでHTMLのネームエンティティを出せるか

CGI.pmでHTMLのネームエンティティを出力できるのでしょうか。 例えばescapeHTML()は'<'や'>'を'&lt;'や'&gt;'へ変換してくれますが、 半角スペースは'&nbsp;'へ変換してくれません。 半角スペースを使いたい場合、print('&nbsp;');のように書くしかないのでしょうか。 それともCGI.pmで何か専用の関数が用意されているのでしょうか。

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

  • ベストアンサー
回答No.1

本当にそれはnon-breaking spaceでなければならないのでしょうか? SPACE(U+0020)のままであるべきものならCSS 2.1の white-spaceプロパティを使う事も検討してください。 検討し,non-breaking spaceであることが必須であるならば,以下続けます。 >半角スペースは'&nbsp;'へ変換してくれません。 指している文字が違うので変換されてはいけません。(前者はU+0020,後者はU+00A0) 結論から言えば実体参照を使う必要はなく,そのままU+00A0の文字を出力してあげればよいようです。 #ただ、現状、ブラウザの実装としてはnon-breaking spaceを出力したファイルを読み込ませたときにユーザーがその文字をテキストエディタにコピーしたときにはU+00A0ではなくU+0020になります。

zyousuke
質問者

お礼

himajin100000さん、ご回答ありがとうございます。 なるほど'&nbsp;'は私がいつも使っている半角スペースとは違うものなのですね。。。 そういうわけで私もCSSを使う方針をとりたいと思います。 そこで新たな質問をさせていただきたいのですが、CSSもCGI.pmを使って簡潔に書けるのでしょうか。 私としてはHTMLファイルに書いた連続した半角スペースをブラウザーが勝手に1個のスペースに置換してしまうのは気に入らないので、 HTML中に存在する全ての半角スペースを、そっくりそのまま表示させるようにしたいです。 CGI.pmでこのためのCSSを書く方法をご存知でしたら、是非とも具体的に教えてください。