dポイントプレゼントキャンペーン実施中!

PHPで「\」(半角)を出力したいが、\\で改行できません。
ブラウザではバックスラッシュ記号が表示されます。EUC-JP環境では問題なかったのですが。。

・サーバ
CentOS5.4(文字コードutf-8)
・テキストエディタ
秀丸(文字コードutf-8)で記述し保存しサーバにアップロード
・ブラウザ(IE6)
phpでヘッダー出力しているのでブラウザのエンコードは
UTF-8となっており、日本語は文字化けしません。

****ソースコード***
<?php
//ヘッダー出力
header('Content-Type: text/html; charset=utf-8');
?>
<html>
<head>
<title>テスト</title>
</head>
<body>
<!-- PHP -->
<?php
echo 'この商品は\\100です。<BR>'; //←これだとバックスラッシュ
echo '改行します。\n改行しました。<BR>'; //←これだとバックスラッシュnと表示される
echo '&yen'; //←これなら¥が出力される
?>
</body>
</html>

utf-8文字コードでは\\では駄目なんですかね?
ちなみにブラウザ→ソース表示を見るとhtml内には
\という文字は帰ってきていますが、ブラウザの表示が
utf-8では「\」は「\」として表示されないのでしょうか?

助けてください。

A 回答 (3件)

utf-8では、IEの場合font-familyのデフォルトが英字フォントになってしまいます。


したがって、\はバックスラッシュとして表示されます。

CSSでfont-familyを日本語のものに設定してみてはいかがでしょう?
ちなみにFirefoxの場合はFirefoxで設定されているフォントがデフォルトになります。
    • good
    • 0

UTF-8もPHPも関係ないでしょう。


&yen;に置換すればよいのでは。
    • good
    • 0

http://www.mew.org/~kazu/doc/newsletter/6.html

U+005Cは文字集合依存で、JIS X 208等を元にすることの多い日本語フォントでは円マークのグリフ、欧米用のフォントではバックスラッシュのグリフになってます。

>&yen;
&yenではなく&yen;です。(ブラウザが勝手に修正している)
十進数165番、つまりU+00A5でこれは似たように見える別の文字なんです。
http://www.w3.org/TR/html4/sgml/entities.html

この回答への補足

回答ありがとうございます。
具体的には以下のようになり、統一できないものかと
悩んでいます。

windows環境で表示
(1)IE6(エンコードutf8)の場合
\\→IE上ではバックスラッシュ表示になる
&yen→IE上では\と表示されOK

(2)Firefox3.5.5(エンコードutf8)の場合
\\→Firefox上では\と表示されOK
&yen→Firefox上では&yenがそのままが表示され話にならない。


この問題はどう回避すべきですか?
というのが質問の意図です。
具体的な対処法を教えてください。よろしくお願いします。

補足日時:2009/12/19 01:20
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!