CGIで表示されるタグが化けるのを防ぐには?

[上に] [前に] [次に]
なっQ [E-Mail] 2000/03/29(水) 15:02:25
掲示板などで,CGIを使ってHTMLを吐き出す際,

print "<font ・・・ >$何らかの変数</font>";
のようにすると,表示されるHTMLが
<font ・・・ >・/font>
のようになってしまい,変数の内容がつぶれてしまい,また閉じタグが
きちんと表示されてくれません。
いったいこれはどのようにしたら回避することができるのでしょうか?
わかるかたは教えてください。よろしくお願いします。

大地 2000/03/29(水) 15:15:14
CGIをShift_JISで書くとこのような現象が起こります。
EUC-JPで書けば大丈夫です。
どうしてもShift_JISで書く場合は、$なんらかの変数 の中にあるメタ文字をエスケープしないといけません。

$なんらかの変数 = quotemeta($なんらかの変数);

みたいに。

a 2000/03/29(水) 15:30:25
パールのスカラー変数名は「まずドル記号でその次が英文字を一個....。」
とにかく、変数名に漢字使用はやめましょう。
(プログラマーの方には理解してもらえるかな...)

大地 2000/03/29(水) 15:35:34
「なんらかの変数」は喩えでこう書いてるんだと思う・・・

a 2000/03/29(水) 15:49:30
漢字で書くから文字化けするのでは...。
全部英数で書けば、Shift_JIS、EUC-JPは関係ないですよね。

なっQ 2000/03/29(水) 16:04:48
あっ,申し訳ありません。たとえが悪かったようですね。

もう一度書き直します。

print "<font ・・・ >$aaa</font>";
のようにすると,表示されるHTMLが
<font ・・・ >・/font>
のようになってしまい,変数の内容がつぶれてしまい,また閉じタグが
きちんと表示されてくれません。
いったいこれはどのようにしたら回避することができるのでしょうか?

とまぁ,このような感じです。
aさん,読み間違えするような文章を書いてしまって申し訳ありませんでした。

大地さん,えっと,eucが使えないので,sjisで表示するしかないんです。
で,変数の内容には漢字も含まれているのですが・・・
教えてくださったようにメタ文字をエスケープすると漢字表示も
いかれてしまうんですよね。
それに,やってみましたが,やはりタグがつぶれたままでした。
いったいどうしてなんでしょう・・・

a 2000/03/29(水) 16:41:33
大地さんへ
勘違いしていました。ごめんなさい。

なっQさんへ
eucが使えないのであれば、あやしい漢字はすべてコード(\xxx)で記述し、
かつエスケープするしかないですね。

文字羅 2000/03/29(水) 16:51:44
どうして文字化けがおこるのか?>(2)シフトJISの第2バイト問題
http://www.tohoho-web.com/wwwkanji.htm

[上に] [前に] [次に]