マークを含む文字列の文字化け

このQ&Aのポイント
  • 以下のPHPプログラムでは、exeファイルを実行し、その戻り値として得られたファイルパスをJScriptに渡しています。
  • しかし、PHPからJScriptへ渡した時に¥マークが文字化けしてしまい、ファイルパスが正しく表示されません。
  • この問題の解決方法を教えてください。
回答を見る
  • ベストアンサー

\マークを含む文字列の文字化け

以下のようなPHPプログラムから、exeファイルを実行し、その戻り値として得られたファイルパスをJScriptに渡すということをやっています。 しかし、PHPからJScriptへ渡したときに¥マークが文字化けし、 「C:Report _DailyManufactPlan€908DailyManufactPlan」のようなことになってしまいます。 何か解決方法なないのでしょうか? <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS" /> <meta http-equiv="Pragma" content="no-cache"> <meta http-equiv="Cache-Control" content="no-cache"> <meta http-equiv="Expires" content="Thu, 01 Dec 1994 16:00:00 GMT"> <link rel="stylesheet" type="text/css" href="/spax.css"> </head> <body><h1>実行結果</h1> <pre> <?php $ip = getenv("REMOTE_ADDR"); set_time_limit(0); $idno = $_POST['idno']; echo exec('ReportOutput.exe I '.$idno.' '.$ip,$rtnval,$outp); $param1 = substr($rtnval[max(array_keys($rtnval))],strpos($rtnval[max(array_keys($rtnval))],'|')+1); $param2 = substr($rtnval[max(array_keys($rtnval))],0,strpos($rtnval[max(array_keys($rtnval))],'|')); ?> <script type="text/javascript" > var jsurl = '<?php echo $param1; ?>' var orgex = '<?php echo $param2; ?>' document.write(orgex) document.write("<script type='text/javascript' charset='UTF-8' src='"+jsurl+"' param1='"+orgex+"'><\/script>") </script> </pre> <a href="/admin.html">戻る</a> </body></html>

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

  • ベストアンサー
  • Donotrely
  • ベストアンサー率41% (537/1280)
回答No.1

インスタントには、何等かの方法で\を\\におきかえるんでしょうねえ。 \は正規表現のエスケープ文字ですから。

toshiya8
質問者

お礼

\を\\に置き換えることで解決しました。 ありがとうございました!!

その他の回答 (2)

回答No.3

HTMLを正規表現でいじくるのと同じくらい この手のことを正規表現でやるのが大嫌いな俺は 今年1月に こういう回答してた。 http://oshiete1.goo.ne.jp/qa4594785.html

  • Donotrely
  • ベストアンサー率41% (537/1280)
回答No.2

言っておきますけど、「インスタントには、」と前置きしたことを忘れないで下さいね。 一度正規表現を調べられたらいいと思います。正規表現には色々な機能を持つ色々な予約文字があって、 これを普通の文字のように使うことはできません。 今回はたまたま\だけだったので\を\\に置き換えただけでうまく行きました。 でも予約文字は\だけではないのです。 .、-、、(、)、[、]、? 他にも色々あります。やはり基本事項は理解しておくべきでしょう。 正規表現が使いこなせるようになると、ワイルドカード的な表現も可能となります。

toshiya8
質問者

お礼

恥ずかしながら正規表現という言葉を今回初めて知りました。 勉強になりました。 言語によって微妙に仕様が異なるのですね。 ?と*がワイルドカードだというくらいしか認識していませんでした。 ありがとうございました

関連するQ&A

  • 文字化けについて

    <?php //文字化け $a = "あいうえお"; ?> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF8"> <title><?php echo $a;?></title> </head> </html> ========================================================== 宣言以前のマルチバイトに対する対策はどのようにしたら良いでしょうか?

    • 締切済み
    • PHP
  • 更新を繰り返すと文字化けが起きてしまいます...

    お世話になります PHP4でHPを作成しています 文字化けに関して質問させて下さい PHPで作成したページの更新をすると 5回に1回の割合で文字化けが発生してしまいます EUC-JPで作成したPHPファイルを表示するので ファイルの先頭に  <? header(\"Content-Type: text/html;charset=EUC-JP\"); ?>  <html lang=\"ja\">  <head>  <meta http-equiv=\"content-type\" content=\"text/html; charset=EUC-JP\">  <meta http-equiv=\"content-style-type\" content=\"text/css\">  <meta http-equiv=\"content-script-type\" content=\"text/javascript\"> と指定してから 他の処理が実行されるようにしているのですが…。 何回か更新を繰り返すと文字化けを起こしてしまいます。 文字化けを起こした時にソースを表示すると 日本語が正しく見れる状態になっていたので シフトJISになってしまっているようで… 宜しくお願いします

    • 締切済み
    • PHP
  • このMETAタグまちがっていますか?

    サーチエンジンで 減量を引っかけたいときには下記であってますか? あるサイトからもってきたのですが 特に <META content=index,follow name=robots> というのがよく意味がわかりませんでした <META http-equiv=keywords content=減量> <META http-equiv=abstract content=減量> <META content=減量 name=description> <META content=index,follow name=robots> <META http-equiv="content-type" content="text/html; charset=Shift_JIS"> <META http-equiv=content-script-type content=text/javascript> <META http-equiv="content-style-type" content="text/css"> <META http-equiv=pragma content=no-cache> <META http-equiv=cache-control content=no-cache>

    • ベストアンサー
    • HTML
  • 文字化けを解決したい

    サイトを持つ管理人です。タグなどについてはかなり初心者です。 iPhoneなどの海外OSから閲覧すると文字化けしてしまうという報告を受けて、タグを色々いじっています。 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を追加してみたのですが、これ単品だと私のPCから閲覧したときに文字化けしてしまいました。 そのため<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">と<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">を並べてみたのですが、これで海外OSからも文字化けを起こさなくなったのでしょうか? こんな感じのタグです↓ <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <META NAME="GOOGLEBOT" CONTENT="NOINDEX, NOFOLLOW,NOARCHIVE"> <META NAME="ROBOTS" CONTENT="NOARCHIVE,NOINDEX,NOFOLLOW"> <meta name="viewport" content="width=380, maximum-scale=1.6" /> <title>練習</title> </head> 全てのスマホからもサイトを閲覧出来るようにするにはどうしたら良いでしょうか?それとも、全てのスマホから文字化けを防ぐことは不可能なのでしょうか? お知恵をお貸しください。

  • リダイレクト時のURLクエリ文字列の取得

    hoge.html <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp" /> </head> <body> <script language="javascript"> <!--// function windowOpen() { window.open("hoge.php?name=" + document.getElementById("data").value, "new_window"); } --> </script> <input type="text" id="data" /> <input type="button" value="new window" onclick="windowOpen()" /> </body> </html> hoge.php <html> <head> <meta http-equiv="content-type" content="text/html; charset=euc-jp" /> </head> <body> <?php echo $_GET['name']; ?> </body> </html> このようなスクリプトがあった時(表示の際の文字コードは任意で)、 文字列をエンコードせずJavaScriptからURLをリダイレクトさせている為、 IE6では、PHP側の$_GET['name']が正常に受け取る事が出来ません。 (Firefoxではアクセスした時点で自動的にURLエンコードしてくれるので 問題ないのですが) これを、JavaScript側でURLエンコードさせてからリダイレクトさせるのではなく、 PHP側で回避させる為にはどういった作業をどういう手順で行えばいいのでしょうか?

    • ベストアンサー
    • PHP
  • HTML・PHPの文字化け

    こんにちは。 PHPとMySQLを使ってショッピングカートを作ろうと思ったのですが、しょっぱなから躓いてしまいました・・・。 index.htmlでメタを <meta http-equiv="Content-Language" content="ja"> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> とeuc-jpにしたのですが、サーバーにアップすると文字化けしてしまいます。 表示のエンコードで確認するとシフトーJisになっています。eucにするとちゃんと表示されるのですが、更新するとやはり文字化けします。PHP・MySQLがeucですので、困っています。 どうにか対処方法はないでしょうか?ご教授をよろしくお願いします。

    • ベストアンサー
    • HTML
  • PHP でデータファイルを別にすると文字化け

    PHPの初心者ですが、文字化けで困っています。 index.php には以下の内容を入れています。 <?php include("ja.php"); echo '<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <p>'.$WELCOME_TEXT.'</p> </body> </html>'; ?> ja.php には以下の内容を入れています。 <?php $WELCOME_TEXT = 'ようこそ'; ?> これでindex.phpを表示させても「????」と出るだけなのですが、どうすれば文字化けがなくなるのでしょう?どちらのファイルもUTF-8のエンコードで保存しています。

    • 締切済み
    • PHP
  • ビルダーでの文字化け。

    ホームページビルダー6.5でHP作成中です。以前はFrontPageで作っていて、それをビルダーで色や文字などをちょっと変えて保存してアップしました。そしたら文字化けするようになってしまいました。 <META http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows"> <META http-equiv="Content-Style-Type" content="text/css"> ここが何か間違った記述になっていますか?FrontPageの時には一番上の<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">がなかったようです。これが原因でしょうか? それと二行目の<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">は消すことはできないでしょうか? よろしくお願いします。

  • Cookieの設定について

    PHPでCookieにデータを設定しているのですが以下のエラーメッセージが出て 正常に設定できません何か悪いのでしょうか? よろしくお願いします。 ○エラーメッセージ Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\index.php:59) in C:\xampp\htdocs\index.php on line 340 Cokkie NG ○ソースの関連部分 index.php <!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"> <head> <title>SAMPLE </title> <meta http-equiv="Pragma" content="No-Cashe" /> <meta http-equiv="Cache-Control" content="No-Cache" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="Content-Style-Type" content="text/css" /> <link type="text/css" rel="stylesheet" href="search.css" /> <?php $r = setcookie('win_width','800',time()+3600,"/"); if ($r) { echo'<p>Cokkie OK</p>'; } else { echo'<p>Cokkie NG</p>'; } ?> </body> <HEAD> <META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE"> </HEAD> </html>

    • ベストアンサー
    • PHP
  • 文字化けするページとしないページ(宣言などは同じなんですが・・・)

    はじめまして。 現在、PHPによる更新管理を入れたページを作っています。 なんとか更新、反映はされたのですが、 ページによって文字化けするページとしないページがあります。 宣言?(1行目から<body>までは)はまったく同じなんですが、なぜか文字化けするページとしないページに分かれています。 しかも文字化けする個所としないページは同じテキストの内容です。 にもかかわらず原因不明の文字化けが起きています。 以下、宣言?以下の部分です。 どうかよろしくお願致します。 <!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"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp"> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <meta http-equiv="imagetoolbar" content="no"> <meta name="Keywords" content="" /> <meta name="Description" content="" /> <meta name="ROBOTS" content="ALL" />

    • ベストアンサー
    • HTML

専門家に質問してみよう