• ベストアンサー

アップロードするとバックスラッシュが円記号になる

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

  • casin
  • お礼率88% (379/429)
  • PHP
  • 回答数3
  • ありがとう数2

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

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

アップロード後のファイル中の文字がU+005Cであるならば,別のエラーが存在しているのでしょう。 バックスラッシュで表示されるか円記号で表示されるかは単純にフォントの問題です。 アップロード後のファイル中の文字がU+00A5であるならば,変換をしてしまっています。 FTPなどのプロトコルレベルでこの変換が行われることはありません。 なので,利用しているソフトウェアの問題になります。

casin
質問者

お礼

やはりソフトからアップロードされた物は、U+00A5になっていました。 意味が分からないのですが、アップロードされる前のファイルを、文字コードMacOS(Japanese)でU+005Cで修正し、それをアップロードしたら無事メールフォームが機能しました。 サーバーに書き出されたファイルの文字コードはUTF-8になっていました。 ソフト内の処理だと思うので意味がわかりませんが、とりあえず解決したという事にします。 ヒントを頂けて助かりました、ありがとうございました。

casin
質問者

補足

先ほど、使用しているソフトからでは無く、FTPソフトを使って該当ファイルをアップロードしてみました。 結果は文字の変換は行われていませんでした。ソフト、もしくはプラグイン側に問題があるのかもしれません。(ソフト、プラグインは外国製の物です) アップロード前のプラグインの中のPHPファイルを編集して対処出来ればいいのですが…。

その他の回答 (2)

  • 1minn
  • ベストアンサー率57% (52/90)
回答No.3

バックスラッシュが円マークに変わっちゃうのは主にWindowsですね。 Parse error: syntax error, unexpected '"' in /virtual/xxx/public_html/xxx.com/contact/xxx.php on line 300 このエラーはおそらくですが文字列の中の円マークがエスケープ文字として判定されたのでは?? 文字列を一括で置換してやれば解決しませんか? 変数 = str_replace("円円", "円円円", 変数);  // 円マークだと表示されなさそうなので漢字で 的外れだったらゴメンナサイ

casin
質問者

お礼

回答ありがとうございます。 書き漏らしていましたが、使っているソフトはMac専用のものです。 とても奇妙な方法ですが、元のファイルを UTF-8 で開くと、半角バックスラッシュになっているんです。 そこで、Japanese(MacOS)に変換して半角¥として表示、それを全て半角バックスラッシュに変換、そのままJapanese(MacOS)で保存。そのままアップロード。 これで上手くいきました。理由は不明です。 一括置換を試しましたが今回は上手くいきませんでした。ソフトの仕様による問題だと思うのでお気になさらないで下さい。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

ごめんなさい、質問の意図がわからないのですが 半角バックスラッシュ=半角円マークですよ 見るソフトや表示するフォントによって見え方がちがうだけです >このせいでPHPエラーが出てプログラムが機能しません。 したがってそのせいではないと思いますが・・・ 具体的にどんなエラーなのでしょうか?

casin
質問者

補足

分かり辛くてすみません。 メールフォームのプラグインが吐くPHPファイルなんですが、実際に送信すると Parse error: syntax error, unexpected '"' in /virtual/xxx/public_html/xxx.com/contact/xxx.php on line 300 のようなエラーがでます。 これで、半角円マークを半角バックスラッシュに直してやると正常に機能するんです。 自分なりに調べて、フォントによって表示が違うというのは理解しましたが、実際修正しないと機能しないのが現状です…。

関連するQ&A

  • バックスラッシュ

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

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

    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
  • バックスラッシュと円記号の同居

    ■ 質問にいたるいきさつ バックスラッシュと円記号を同一ページ内に同居させるばあい、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 いずれも日本語版

  • 「円」記号と「バックスラッシュ」記号

    Winで入力したメール文章に「円」記号があったのですが(フォルダを表すため)Macでメールを受け取ったら「バックスラッシュ」に見えます。これはアンクのコード自体も違うということでしょうか? なぜ、アンク記号までも、コードが違うのでしょうか? 漢字コードが違うのはいままで気づいていましたが。 WinとMacのコードの違いについて御教えください。

    • ベストアンサー
    • Mac
  • スタイルシートで円マークがバックスラッシュに

    スタイルシートを使って半角の円マークを使ったら、 バックスラッシュで表示されてしまったのですが、 回避する方法はないでしょうか?

    • ベストアンサー
    • HTML
  • バックスラッシュを入力したい

    コマンドプロンプトにバックスラッシュを打ち込みたいのですが、どうやって打てば表示されるのでしょうか? 半角英数状態でキーをおしてバックスラッシュをうとうとすると、\の記号がでてきてしまいます。 あるWEBページの解説にそうしろと書いてあるのですが、できません。よろしくお願いします。

  • MT4のEA作成における半角バックスラッシュ記号について

    MT4のEAを作成する際に、メール送信をするための関数SendMail()中で、改行をするときは、いわゆる半角バックスラッシュ(通常のスラッシュ記号を裏返しにしたもの)を使用します。この半角バックスラッシュ記号は「ろ」のキーのところにありますが、これを押すと、「\」のマークが打たれてしまいます。MT4のEAとしては、そのままでよいのでしょうか。 どなたかご存知の方がいらしたら、ご教示願います。

  • 「バックスラッシュの記号5,164」になります。

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

    • ベストアンサー
    • HTML
  • バックスラッシュと円マーク

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

    • ベストアンサー
    • Mac
  • 円記号の文字化け

    HTMLを出力するPerlを新しくアカウントを取得したレンタルサーバにアップロードしたら、これまで正常に表示できていた円記号が半角バックスラッシュになりました。 IEのメニューでSJISにチェックがあるからSJISで解釈しているようですが、セリフが付いていていつもの文字とは違うように見えます。 IEで表示ページをローカルにダウンロードするとなぜかちゃんと円記号として見れますし、セリフも無いです。 文字化けではなく文字コードの違いかもしれませんが、どうやったら直りますか?

    • ベストアンサー
    • Perl

専門家に質問してみよう