• 締切済み

¥マークを出力したいがバックスラッシュが表示される

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では「\」は「\」として表示されないのでしょうか? 助けてください。

  • PHP
  • 回答数3
  • ありがとう数2

みんなの回答

  • vancunt
  • ベストアンサー率33% (2/6)
回答No.3

utf-8では、IEの場合font-familyのデフォルトが英字フォントになってしまいます。 したがって、\はバックスラッシュとして表示されます。 CSSでfont-familyを日本語のものに設定してみてはいかがでしょう? ちなみにFirefoxの場合はFirefoxで設定されているフォントがデフォルトになります。

  • kotoby2003
  • ベストアンサー率15% (280/1755)
回答No.2

UTF-8もPHPも関係ないでしょう。 &yen;に置換すればよいのでは。

回答No.1

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

tastykk
質問者

補足

回答ありがとうございます。 具体的には以下のようになり、統一できないものかと 悩んでいます。 windows環境で表示 (1)IE6(エンコードutf8)の場合 \\→IE上ではバックスラッシュ表示になる &yen→IE上では\と表示されOK (2)Firefox3.5.5(エンコードutf8)の場合 \\→Firefox上では\と表示されOK &yen→Firefox上では&yenがそのままが表示され話にならない。 この問題はどう回避すべきですか? というのが質問の意図です。 具体的な対処法を教えてください。よろしくお願いします。

関連するQ&A

  • バックスラッシュと円記号の同居

    ■ 質問にいたるいきさつ バックスラッシュと円記号を同一ページ内に同居させるばあい、IE であれば <head/> の <meta/> に charset=UTF-8 とかき、<body/> に <p>&#x5c; &#xa5;</p> とすれば、表示上バックスラッシュと円記号がならんでみえます。 Netscape と Opera は <p lang="en">&#x5c; &#xa5;</p> でもだめでした。 Netscape は表示メニューの文字コードを ISO-8859-1 にすれば、バックスラッシュが表示されます。 Opera はどうやってもバックスラッシュが表示されません。 ■ 質問 Netscape や Opera をつかってページをみるひとにもバックスラッシュをみせるにはどうすればいいでしょう。 できれば、ページをみているひとに「文字のエンコードをかえてみてください」とはいいたくありません。 できれば、全角のバックスラッシュはつかいたくありません。 できれば、画像はつかいたくありません。 このようなわがままを実現する方法があればおしえてください。 ■ 実験してみた環境 OS: Win XP IE 6 Opera 7.20 Netscape 7.1 いずれも日本語版

  • 半角のバックスラッシュが、表示できたり出来なかったりするのはなぜですか?

    OK Waveユーザ各位 アホな質問にお付き合い願えれば幸いです。 ふと、バックスラッシュ”\”を入力したくなりました。 1 キーボード右下、表示はトップスコア・バックスラッシュ及び”ろ”のキーを、日本語FEPの「入力モード」を「半角英数」にして押下…"\"と"_"が表示される・× 2 同キーを「入力モード」を「ひらなが」にして押下…全角の"_”と”¥”が表示される・変換キーを押下しても半角全角に変わるのみ。…× 3 IMEパッド「手書き」で斜め線を引く…候補に出てこない・× 4 IMEパッド「文字コード」でひたすら総当たりでサーチ…全角”\”は発見できたが、半角は発見できず・× 5 半角バックスラッシュの使用されていたWeb PageかCopy。NotebookにPaste…"\"に変換されてしまう・× 6 ネットででバックスラッシュを検索http://www.netlaputa.ne.jp/~kose/Software/backslash/、なるページを発見するも、システム要件が今一つ対応しているのか不明でパッチ当てに踏み切れず・× 7 改めて基本に帰ってASCII Code Tableをみると、半角バックスラッシュはあるが"5C(16)"にあるが、、日本語ASCIIコード表には無い(同一文字コードには"\"がAassignされている)・×  8 Wikipediaを読む。どうやら日本語Windowsでは、半角バックスラッシュはサポート外らしい事がなんとなくわかった様なわからない様な(^_^;)ゞ という様な経緯で、半角バックスラッシュは扱えないらしいという結論にたっしたのですが、疑問が二つ湧きました。 A なぜIMEパッドで斜め線を引いたり画数で検索しても、全角バックスラッシュが出てこないのか? B ブラウザでは半角バックスラッシュが表示されるのはなぜか? です。UnicodeとかシフトJISが良く分からない私なので(EBCDIC Codeで止まっています(^_^;)ゞ)、このあたりの事情をご教示いただけると幸いです。 参考までに、私の環境は DELL M17x Windows Vista です。 何卒宜しく御願い申し上げます。 

  • バックスラッシュ

    こんばんは。お世話になります。 PCの回復コンソールインストールしようとしたのですが、半角バックスラッシュの入力ができず、こまっています。 ATOK15使用、記号では入りますが\半角になりません。 文字コード表から、Time new roman、Arialなど選びバックスラッシュをこぴー貼り付け、しかし円マーク¥になってしまいます。 なんとか半角バックスラッシュを付けたいと思いますので、よろしくお願いします。 「ファイル名を指定して実行」に入力中でした。コードが同じ¥マークで代用できるかと思いましたが、×でした。

  • バックスラッシュと円マーク

    バックスラッシュと円マーク OS10.5ですがテキストエディタなどで 文字入力の際にトラブルを抱えています。 マッピングを変え強制的に¥の位置でバックスラッシュがでるように設定しています。 しかしいくつかのソフトでは やはり円マークの表示となり困っています。 回避策はありますでしょうか。

    • ベストアンサー
    • Mac
  • インクルードファイル内にPHPコードを挿入してecho表示

    処理が異なる2つのPHPファイルを一つのテンプレートファイルから index.phpファイルへ表示させたいのですが、テンプレートファイル内に css_echo.phpをインクルードさせたコードを書くとそのままソース上に表示されてしまいます。 どのような方法をとればいいかアドバイス下さい。 ■条件としては、 ・css.php/css_echo.phpの処理ファイルはそれぞれ別ファイルとしたい ・index.phpファイルは <html> <head> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> </body> </html> には書かない方法で対応したいです。 ファイルは以下です。 ---------------------------------------------------------------------- テンプレートファイル(temp.html) <html> <head> <!--問題はここです。 --> <?php require_once('./css_echo.php');//ブラウザを判別してCSSファイルを出力 ?> </head> <body> サンプル表示{この中はブラウザ判別して表示・非表示にする} </body> </html> 処理PHPファイル(echo.php) <?php $htm = file_get_contents($temp); echo preg_replace('/[{}]/', '', $htm);// {}内を削除して表示 ?> ブラウザ判別用ファイル(css_echo.php) <?php //実際にはこの前にブラウザ判別し処理コード(省略) echo "<link rel=\"stylesheet\" href=\"$dir$pc\" type=\"text/css\">\n"; ?> メイン表示用PHPファイル(index.php) <?php $temp = "./temp.html"; //このページのテンプレートファイル名パス require_once('./echo.php'); ?> ------------------------------------------------------------------------

    • 締切済み
    • PHP
  • mbstring.http_output = UTF-8 としているのにSJISで出力されているようである

    php.iniでmbstring.http_output = UTF-8 としました。 テキストエディタで <HTML> <BODY> <?PHP echo "教えて"; ?> </BODY> </HTML> というファイルをつくり、sjisで保存し、test.phpと名づけました。 このファイルをブラウザで表示させる際、エンコードをUTF-8とすると文字化けしてしまいます。 SJISだとちゃんと表示できます。 mbstring.http_output = UTF-8としている以上UTF-8に変換されるわけではないのでしょうか?

    • ベストアンサー
    • PHP
  • アップロードするとバックスラッシュが円記号になる

    タイトルの文字制限で上手くかけませんでしたが、PHPファイルをサーバーにアップロードすると、半角バックスラッシュが半角円記号に置き換わってしまいます。 元のファイルはUTF-8で保存、ちゃんと半角バックスラッシュで表示されていますが、サーバーにアップロードしたものを開くと半角円記号に置き換わっています。 このせいでPHPエラーが出てプログラムが機能しません。 アップロードしたファイルを編集すれば機能するのですが、HP作成ソフトのプラグインの中のファイルなので、アップロードする度に修正するのが非常に手間です。 回避策があればよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 「バックスラッシュの記号5,164」になります。

    ソースでは\5,164としているのですが 実際ブラウザで表示すると 「バックスラッシュの記号5,164」になります。 でもブラウザでの表示をコピーして貼り付けると円マークになります。 ブラウザでも縁マークで表示するにはどうすれば良いでしょうか? win7、IE11です。

    • ベストアンサー
    • HTML
  • PHPで動的にHTMLを出力したときの現象

    サーバは自分で立てたcentOS5.4(i386版)を使用しており、そこでホームページの作成をしております。 ホームページは、PHP5+XHTML+CSS+JavaScriptを使用しており、それぞれ別ファイルで作成してあります。 アクセス先はPHPで、そのPHP内にテンプレートを表示する処理を記述してあるのですが、PHPで動的に表示した状態のソースを見ると、生のHTMLの内容と違った状態で表示されてしまいます。 生のHTMLと動的に出力したHTMLのソースは下記の通りです。 生のHTML ================= <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> <head> ・ ・ ・ 動的のHTML ================= ?????????<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr"> ・ ・ ・ 動的に出力した状態ですと、ソースの最初に"?????????"という文字が表示されてしまいます。 PHPやHTMLなど、全てのファイルは 文字コード:UTF-8 で、HTMLとCSSは 改行コード:CRLF で、その他のPHPやJavaScriptは 改行コード:LF で作成しております。 php内では、 まずテンプレートを"openFile"で開き、 文字列置換($bodyはテンプレートファイル) $body = str_replace("\\", "\\\\", $body); $body = str_replace("\"", "\\\"", $body); eval("\$body = \"$body\";"); をして、最後に mb_http_output("UTF-8"); header("Content-type: text/html;charset=UTF-8"); print($body); としてあります。 文字コードの関係で文字化けを起こしているため、最初に"?????????"とソースに表示されてしまっているのかと思うのですが、どこが原因なのか分かりません。 原因がお分かりになる方、同じ現象になったことのある方いらっしゃいましたら、ご教授のほどお願い致します。

    • ベストアンサー
    • HTML
  • PHPボタンがIE ver8で表示されない時がある

    お世話になります。 XP/PHP5利用です。 html/PHPは初心者です。 PHPで下記のコードを作りました。  (1)問い合わせフォーム .html  ↓  (2)確認画面.php エンコーディングは、 (1)html (2)php ともに 「UTF-8」です。 (1)から(2)へ行く時の(1)htmlの画面には、ボタンが問題なく表示されています。 (なお、画面の作成は、Golive CSで作成しました) (2)PHPの確認画面でパラメーターなどの文字は どのパソコンのブラウザーでも問題なく表示されてるのですが、 ボタンが表示されるブラウザーと表示されないブラウザーがあります。 コードは次の通りです。 --------------------- <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <STYLE TYPE="text/css"> <!-- TABLE { border-collapse : collapse; } TH,TD { border : solid 1px gainsboro; } --> </style> <title>入力内容のご確認</title> </head> <body> <?php // 詳細のセット $_03 = htmlspecialchars($_POST['03'], ENT_QUOTES); // ~略~ $_14 = htmlspecialchars($_POST['14'], ENT_QUOTES); ?> <center>お申し込み<center> <br> <form action="./d_send_inquiry.php" method="POST"> <input type="hidden" name="03" value="<?php echo $_03; ?>">   // ~略~ <input type="hidden" name="14" value="<?php echo $_14; ?>"> <br> <center>入力内容のご確認<center> <br> <table border="1" width="500" bordercolor="#DCDCDC"> <tr> <td width="150" height="35">お名前</td> <td><?php echo nl2br($_03); ?></td> // ~略~ <tr> <tr> <td width="150" height="35">メールアドレス</td> <td><?php echo nl2br($_14); ?></td> <tr> </table> <br> <br> <center>ご確認後、送信ボタンを押してください<center>  <input type="submit" value="入力内容の送信" style="position: relative; left: 15px; top: 50px;" /> </form> </body> </html> -------------------------------------- IE ver8で、 表示されるブラウザーのパソコンと 表示されないブラウザーのパソコンがあります。 コードが原因なのか、 パソコン側のブラウザーの問題なのか、 または、エンコーディングの問題なのか はっきりしなく困っています。 また、原因の解消方法なども ご教授いただけましたら幸いです。 何卒よろしくお願い申し上げます。

    • ベストアンサー
    • PHP

専門家に質問してみよう