GETで値を渡す場合の記号と数字が文字化けする問題について

このQ&Aのポイント
  • GETで値を渡す場合に、受け取り側(リンク先)で記号と数字が文字化けする問題が発生しています。
  • 対処方法を知りたい場合、以下のコードを参考にしてください。mb_convert_encoding関数を使用して文字列を変換し、mb_convert_kana関数を使用して英数字を全角に変換してください。
  • 具体的なコードの例として、リンク元のコードとリンク先のコードを示しています。
回答を見る
  • ベストアンサー

GETで値を渡すと、記号と数字がある文字列は文字化けに

環境はxp、apache2、php5、Postgresql8.2です。 1台のPCをサーバ&クライアントにしています。 ただ今PHPとPostgresqlの勉強をしています。 いつも質問に答えてくれてありがとうございます。 GETで値を渡すと、 受け取り側(リンク先)で 記号と数字がある文字列は文字化けになってしまいます。 対処方法をご存じでしたら、ご教示して頂けたら幸いです。 --------------- ○リンク元 $aaa2 = mb_convert_encoding("みかん-1部"$row[1],"UTF-8","eucJP-win"); //英数字を全角に変換 $aaa2 = mb_convert_kana($aaa2, "KV"); $nextb = "process.php?setype=5&number=" . $aaa . "&bu=$aaa2&offset=0&page1=10"; ○リンク先 print("<span class='typea'>$_GET[bu]</span>");

  • wee
  • お礼率19% (62/318)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

URLを作成するときに、urlencodeしてセットしてみてください。 http://www.php.net/manual/ja/function.urlencode.php

wee
質問者

お礼

ご返事有り難うございました。 お陰様で解決しました。

関連するQ&A

  • php4での文字化け

    php4で以下のプログラムを実行したら、IEの設定で文字コードをどれにしても文字化けします。 文字化けしない方法はあるのでしょうか? よろしくお願いします。 <?php $str = "あいうえお"; $str = mb_convert_kana($str,"KV"); echo "$str\n"; ?>

    • ベストアンサー
    • PHP
  • 機種依存文字

    いつもお世話になっております。 機種依存文字について質問させていただきます。 CSVファイルをアップロードして、文字コードがEUCのデータベースに 格納したいと思っております。(PHPの文字コードもEUCになっております。) 「(はしごたか)」「(たつさき)」などの機種依存文字が 文字化けをしてしまいます。 $name = mb_convert_kana(mb_convert_encoding($data[1], "EUC-JP", "Shift-JIS"), "KV") $name = mb_convert_kana(mb_convert_encoding($data[1], "eucJP-win", "Shift-JIS"), "KV") としても文字化けをしてしまいます。 また、以下の設定をしても文字化けは解消されません。 ini_set('default_charset', 'eucJP-win'); ini_set('mbstring.http_output', 'eucJP-win'); ini_set('mbstring.internal_encoding', 'eucJP-win'); 皆様、ご提示お願いいたします。 よろしくお願いいたします。 <環境> OS:Red Hat Linux PHP:Version 4.3.1 DB:MySQL 3.23.56

    • ベストアンサー
    • PHP
  • PHP+Postgres 「髙」が文字化け

    DB上に格納した文字列を取得し、PHPで出力すると、 「髙」(はしごだか)等、一部の文字が「□・」のような見た目に化けてしまいます。 環境は以下です。 Linux(CentOS 5) PHP 5.1.6 Apache 2.2.3 PostgreSQL 8.4.3 文字コードは以下です。 Postgres:EUC-JP PHPソース:EUC php.ini の[mbstring]はコメントのまま変更していません。 文字コードの変換を試してみたのですが、「髙」としては出力できませんでした。 Windows上では「CP51932」に変換すると正常に出力できましたが、Linux上ではやはり駄目でした。 mb_language("uni"); mb_internal_encoding("euc-jp"); mb_http_input("auto"); mb_http_output("euc-jp"); $str = "髙橋"; print(mb_convert_encoding($str, "EUCJP-win")); print(mb_convert_encoding($str, "EUCJP-win","EUC-JP")); print(mb_convert_encoding($str, "SJIS")); print(mb_convert_encoding($str, "SJIS","EUC-JP")); print(mb_convert_encoding($str, "SJIS-win")); print(mb_convert_encoding($str, "SJIS-win","EUC-JP")); print(mb_convert_encoding($str, "UTF-8")); print(mb_convert_encoding($str, "UTF-8","EUC-JP")); print(mb_convert_encoding($str, "EUC","SJIS")); print(mb_convert_encoding($str, "Unicode")); print(mb_convert_encoding($str, "Unicode","EUC-JP")); print(mb_convert_encoding($str, "UTF-8", "sjis-win")); print(mb_convert_encoding($str, "CP51932")); print(mb_convert_encoding($str, "MS932")); print(mb_convert_encoding($str, "MS932","EUC-JP")); print(mb_convert_encoding($str, "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win" ), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "EUCJP-win","EUC-JP"), "UTF-8","EUCJP-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "UTF-8","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win" ), "EUCJP-win","SJIS-win")); print(mb_convert_encoding(mb_convert_encoding($str, "SJIS-win","EUC-JP"), "EUCJP-win","SJIS-win")); http://blog.livedoor.jp/loopus/archives/50160285.html 上記サイトによると、解決法は「EUC-JPで出力しないこと」という事でしたが、 文字コードを変換して出力できるような事を書いているサイトもあり、結論が出せずにいます。 ソースを書き換えるのは避けたいのですが、いい方法がありましたらご教示ください。

    • ベストアンサー
    • PHP
  • カタカナの文字列を検出する関数

    function iskanamoji($str) { $str=mb_convert_kana(mb_convert_kana($str,"KV"),"A"); if(mbereg('^([ァ-ヶ]|[ー])*$',$str))return true; return false; } を作りましたがUTFー8で機能しません。 どのように直したらよいでしょうか?

    • ベストアンサー
    • PHP
  • PHP cURLでPOSTした値が文字化けしてしまいます。

    PHPのcURL関数を使って、POSTしているのですが、POSTの値をUTF-8からSJIS-winに変換して送信したところ、受け側で文字化けしてしまいます。 ※ちなみに、ソースはUTF-8です。 ソース的には、ざっくり以下のような感じです。 $params = 'name=' . $name; $params .= '&kana=' . mb_convert_kana($kana, 'k'); $params = mb_convert_encoding($params, 'SJIS-win', 'UTF-8'); ・・・ $urlConnect = curl_init(); ・・・ curl_setopt($urlConnect, CURLOPT_POSTFIELDS, $params); $res = curl_exec($urlConnect); 受け側を見ると、 mb_detect_encoding($_POST['name']) が、「UTF-8」となっていました。 解決するポイントでも構いませんので、ご指導お願い致します。

    • 締切済み
    • PHP
  • phpでmb_convert_kanaについて教えてください。

    phpでmb_convert_kanaについて教えてください。 「半角」-「全角」変換を行っていましたが、現在文字化けしてしまいます。 PHP5ではmb_convert_kanaの使い方が変わったのでしょうか?

    • ベストアンサー
    • PHP
  • file_get_contents()にて文字化け

    PHPにてfile_get_contents()関数を使用し、ソースを読み込んだのですが、文字化けしてしまいます。 ※読込先は海外サイトです。日本語は利用されていません。 エンコードの問題かと思い、試行錯誤しましたが、うまくいきません。 解決方法を教えてください。 ちなみに、ソースの読み込み事態はできているので、ユーゼエージェントで、はじかれていることはないと思います。 [相手サイトの情報] ・UTF-8を宣言している ・日本語は使用していない ※URLを$urlとします。 [ソース] header("Content-type:text/html;charset=UTF-8"); echo mb_convert_encoding(file_get_contents($url),'UTF-8','auto'); file_get_contents($url)単体でもアウトでした。 お願いしますm(_ _)m

    • 締切済み
    • PHP
  • file_get_contents()で文字化けしてしまう

    file_get_contents()で文字化けしてしまう お世話になります。 職場の環境でプロキシ経由でないと外部ファイルを読み込めないということなので プロキシ経由でファイルを読みこもうとして http://blog.umeyama.org/2009/06/php-proxy.html を参考に $csvscj="http://xxxx/yyy/zzz.csv"; $proxy = array( "http" => array( "proxy" => "tcp://proxy:port", "request_fulluri" => true, ) ); $sc = stream_context_create($proxy); $FileList=file_get_contents($csvscj,false,$sc); $FielList = mb_convert_encoding($FielList, "UTF-8", "SJIS"); echo '$FileList='.$FileList; $csvscjはShiftJISのcsvファイルです。 このようにechoで$FileListを表示してみると、半角文字以外は文字化けしてしまいます。 mb_convert_encoding()をレム文にしても同じ結果です。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • GETで渡した値の受け取り方

    <a href="xxx.cgi?id=hogehoge">リンク先</a> この"hogehoge"をリンク先のperlのソースで受け取るにはどうすれば良いのでしょうか? PHPでいう $id=$_GET['id']; のようなことをCGIでもやりたいのですが、どなたかご教授下さい。

    • ベストアンサー
    • Perl
  • PHPでURLのソースの中から数字の文字列を検索したいのですが

    PHPでURLのソースの中から数字の文字列を検索したいのですが <?php $str = 85%80%78%77%70%60%; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> この記述で、文字列から80%のような 全角文字で%の前の文字だけを抜き出せました。 そこでURLからデーターを抜き出すべく ////////ソース////// <table> <TR> <TD>あ</TD> <TD><B>88%</B>/TD> </TR> <TR> <TD>す</TD> <TD><B>85%</B>/TD> </TR> ........... </table> 下記のように記述しましたが <?php $html_data = file_get_contents("http://www.1234.com/1234.html"); if (preg_match("/<table\s.*>([\s\S]*)<\/table>/i",$contents,$matches)){ $contents = $matches[1]; } $str = $html_data; $pattern="/[0-9]+(?=%)/u"; mb_internal_encoding("UTF-8"); preg_match_all($pattern,$str,$matches); foreach((array) $matches[0] as $val) { print mb_convert_kana($val,"a")."<br>\n"; //半角にして表示 } ?> しかし、動作しません。 よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう