• ベストアンサー

PHPのエンコードは特殊?

$a="あ"; これを%E3%81%82とエンコードしたいのですが、 $b=urlencode($a); echo $b; とすると、%82%A0と出てきます。 %E3%81%82と表示させるにはどのように記述するのでしょうか? FLASHを少しかじっていてAS2ではescapeで対応できるので、 PHPのエンコードが変なのでしょうか。 分かる方いましたらご教授をお願いいたします。

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

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

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

ソースの文字コードがShift-JISになっていませんか? Shift-JISの場合は「%82%A0」、UTF-8の場合は「%E3%81%82」になります。

wggtanp
質問者

お礼

お返事ありがとうございます、まさにそれでした。 全く気付きませんで・・・助かりました!

その他の回答 (1)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.2

>$a="あ"; >これを%E3%81%82とエンコードしたいのですが、 >とすると、%82%A0と出てきます。 >%E3%81%82と表示させるにはどのように記述するのでしょうか? urlencode する前のエンコーディングがShiftJISになってますね。 UTF-8に変換した上で urlencode かけてください。

wggtanp
質問者

お礼

お返事ありがとうございます、まさにそれでした。 全く気付きませんで・・・助かりました!

関連するQ&A

  • ディレクトリ名に日本語をエンコードしたものを入れる

    例えば、[てすと] という文字列をurlencode()関数 でエンコードして %5B%E3%81%A6%E3%81%99%E3%81%A8%5D になりますよね。 でも、自分のサイトで、http://○○○.com/test/%5B%E3%81%A6%E3%81%99%E3%81%A8%5D/index.php にリンクを張ってアクセスしても、アクセスできないのです。 404エラーになってしまいます。 例を挙げるなら、ニコニコ動画のタグ以降のURLは http://www.nicovideo.jp/tag/○○○○○ となっています。 ○○○○○の部分に日本語をエンコードした文字列が入っています。 このような日本語をエンコードした文字列は、どうやって作ればいいのですか? urlencode()関数 で作ったはいいのですが、そこにリンクを張ってもアクセスできません。

    • ベストアンサー
    • PHP
  • PHP ハイパーリンクのエンコードについて

    PHP ハイパーリンクのエンコードするには、どうしたらいいのでしょうか? <?php $jew = $path."brand/brand.php?keyword=" . urlencode("マグロ").."&sort=".standard;?> <a href="<?= $jew ?>">魚</a> 下記のサイトも参考にしたのですが、日本語がそのまま返ってきてしまいます。 http://nyx.pu1.net/practice/external_var/external_var3.php http://namidameweb.blog62.fc2.com/blog-entry-231.html

    • ベストアンサー
    • PHP
  • urlencodeでエンコードされる文字コードが変わる

    内容が同じSJISとUTF-8のソースを実行すると、それぞれurlencodeでエンコードされる文字コードが変わってしまい困っています。 SJISでもUTF-8と同じようにエンコードをしてパラメタをサーバーに渡したいです。 例: 「株」というキーワードでエンコードすると SJISの場合:%8A%94 UTF-8の場合:%E6%A0%AA urldedodeの結果はどちらとも「株」となる。 php.iniのmbstringを一通りいじってみましたがうまくいきません。 どなかた詳しい方ご教授頂ければと思います。

    • ベストアンサー
    • PHP
  • urlにエンコードしたい。

    urlにエンコードしたい。 まったくの初心者で見よう見まねでやっています。下記を実行したのですが、 while ($col = mysql_fetch_array($rst)) { $body .= "<LI><A href='search.php?comment1=$col[comment1]'> $col[comment1]</A> " . "($col[cnt]件)"; } http://**.**.**/search.php?comment1= ほげほげ になってうまくいきません。 この ほげほげを%A4%DB%A4%B2%A4%DB%A4%B2のようにするには いろいろググってurlencodeをすれば良いのかな?と思い、いろいろ試しましたが うまくいきませんでした。上の文に何を足せば、どう書けばうまくいくのでしょうか? それとも何か違う方法があるのでしょうか? ご存知の方ご教授よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPのレイアウトを指定するCSSの書き方

    http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/fetch_feed 上記サイトのPHPを利用したいのですが、フォントや枠を指定するスタイルシートの書き方を教えて欲しいです。 これがPHPの構文です。 <h2><?php _e('Recent news from Some-Other Blog:'); ?></h2> <?php include_once(ABSPATH . WPINC . '/feed.php'); $rss = fetch_feed('http://example.com/rss/feed/goes/here'); if (!is_wp_error( $rss ) ) : $maxitems = $rss->get_item_quantity(5); $rss_items = $rss->get_items(0, $maxitems); endif; ?> <ul> <?php if ($maxitems == 0) echo '<li>No items.</li>'; else foreach ( $rss_items as $item ) : ?> <li> <a href='<?php echo $item->get_permalink(); ?>' title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'> <?php echo $item->get_title(); ?></a> </li> <?php endforeach; ?> </ul> スタイルシートで出てきたページの例文を、PHPの構文を挟むように記述してみたりしたのですが、真っ白になって表示できなくなったりしますし、フォント指定と枠指定の組み合わせ方もわかりません。 一からというと申し訳ないですが、どなたか例文を記述いただけると嬉しいです。 サンプルの修正からでしたら、間違えながらも自分がしたいように持っていけると思いますので・・・

    • ベストアンサー
    • PHP
  • エンコードされたものを、$_GETしたら...

    よろしくお願いします。グーグルdirectory検索のパラメータ%E3%82%A2%E3%83%BC%E3%83%88を使ったWEBアプリを作ろうと思っています。 $query ='%E3%82%A2%E3%83%BC%E3%83%88/' ; //これは'アート/'ディレクトリに対応している print '<a href="'.$_SERVER['PHP_SELF'].'?query='.$query.'">アート</a>'; のリンクをブラウザで実行して、$_GET['query']して、$queryに代入してprintしたところ、'アート/'と表示されました。 '%E3%82%A2%E3%83%BC%E3%83%88/'を何度も持ち歩きたいと思っているので、'アート/'となってもらっては困るのです。なぜなら、この$query ='アート/'を次に$_GETで受け取ると、 'アーチE'と表示されたからです。 '%E3%82%A2%E3%83%BC%E3%83%88/'のまま <a href="'.$_SERVER['PHP_SELF'].'?query='.$query.'">アート</a>で、 次に渡して、$_GET['query']で受取る方法はないでしょうか? または、'%E3%82%A2%E3%83%BC%E3%83%88'をデコードして'アート'にする関数などありますか?  urlencode('アート');は、'%83A%81%5B%83g'という少し短いものになり、これは使うことができないのです。

    • ベストアンサー
    • PHP
  • phpの記述につきまして

    phpの記述につきまして データベースから <? echo $file_name; ?> で $file_name に ****.php の値が呼び出されるのですが include の記述で <?php include("<? echo $file_name; ?>"); ?> と言う風に 利用表示するとエラーになってしまします。  include("ここにDBからのPHPファイル名を呼び出したい!") とするには どのように記述すれば宜しいでしょうか? ご教授いただければ幸いに存じます。

    • ベストアンサー
    • PHP
  • PHPでの変数化

    よろしくお願いします。 ★hyouji.php $a_list[1]="a"; $a_list[2]="b"; という配列があって パラメータ num=1を受け取ることにより、結果を表示したいです。 hyouji.php?num=1 つまり、 echo $a_list[$num]; というようなことをやりたいのですが、うまくひょうじされません。 どうかご教授ください。よろしくお願いします。

    • ベストアンサー
    • PHP
  • phpのXSS対策 どこに問題が?

    phpのXSS対策について質問があります。 あるphpの参考書に以下のような記述があったのですが、理解できません。↓ ---------------------------------------------------------------------------------- ただし、htmlspecialchars()関数でのエスケープ処理は「&」「<」「>」「"」「'」を文字参照に変換するものなので、これらの文字をまったく使わずにJavaScriptのコードを記載できる場所に変数を表示させるようなHTMLを書いてしまった場合は対策できません。 たとえば、以下のような場所に変数を表示する場合です。このようなコーディングをしてしまった場合は、htmlspecialchars()関数でのエスケープ処理はXSSを防ぐことはできません。このような場所に変数を書かないように注意してください。 <a href="<?php echo $input; ?>"> ---------------------------------------------------------------------------------- この記述を書いてしまうとなぜhtmlspecialchars()関数では防げないのでしょうか? よろしくお願い致します。

    • ベストアンサー
    • PHP
  • arrayごと、エンコードをEUCからUTF-8にするには?

    お世話になります。 PHPの記述についてなのですが エンコードをEUCからUTF-8にするには <? $data1 = mb_convert_encoding($data1, "UTF-8", "EUC"); echo $data1; ?> として変更できたのですが、下記のような配列に関して 表示されるデータ丸ごと変更するにはどうすればいいのでしょう? <? $crnm = array(); $crnm [CARD_DISEBLE_CD] = CARD_DISEBLE_NM; $crnm [CARD_A_CD] = CARD_A_NM; $crnm [CARD_B_CD] = CARD_B_NM; $crnm [CARD_C_CD] = CARD_C_NM; $crnm [CARD_D_CD] = CARD_D_NM; $crnm [CARD_E_CD] = CARD_E_NM; $tmp1 = array(); $tmp1 = split ("/", $credit_kb); for ($ii=0; $ii < count($tmp1); $ii++) { echo $crnm [$tmp1[$ii]] . " "; } ?> いろいろテストしてみたのですがうまく表示されませんでした。 どなたかご教授いただければ幸いです。

    • ベストアンサー
    • PHP