• ベストアンサー

エンコードについて

URLエンコードを使用してデーターの受け渡しをしようと思っているんですが。 1ページ目 $cc4=urlencode("ソ"); echo "エンコード={$cc4}<BR>"; 2ページ目 $cc5=urldecode($cc4); echo "デコード={$cc5}"; カタカナの『ソ』が入るとちゃんと受け渡しが出来ません。 どうしたらいいでしょうか? よろしくお願いします。

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

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

  • ベストアンサー
  • nattouv
  • ベストアンサー率75% (3/4)
回答No.3

stripslashes()関数を使えば良いんじゃないですかね。

takataka7
質問者

お礼

こんな関数があったんですね。 すいません、本で関数を調べたつもりでしたが、一発で解決しました。 ありがとうございます。

その他の回答 (2)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

'ソ'がシフトJISで835Cの為に¥のコード(5C)を含むために ””中でエスケープ処理をしようとするためにエラーになります。 簡単な解決としては、文字列中の'\'を'\\'に置き換えることです。 例えばそういう文字列の場合 "ソ\"としてやると\x83\\となって¥を2つにしたのと同じですからOKになります。 いちいち文字コードを観ながら¥マークを挿入していくのも面倒ですね。 試してみたところ $data=<<<EOD ソ EOD; $cc4=urlencode(rtrim($data)); のようにヒアドキュメントで文字列に代入し余分に入る改行を削除すればうまくいきます。

takataka7
質問者

お礼

まだ始めたばっかりでしたので初歩的な事が分かっておらず、分かりやすい回答ありがとうございました。

  • yamagoro
  • ベストアンサー率20% (12/60)
回答No.1

日本語はURLエンコードしません。する必要もありません。

関連するQ&A

  • htmlspecialchars()について

    htmlspecialchars()関数で、クエリー文字列をHTMLエンティティーに変換してるはずなのですが、中身をダンプしたり、ジャンプしたページのクエリーを見ても、変換されておらず、生の 引数が表示されています。どうすれば、%2ケタなどの文字列で表示されるのか、ご指導お願い致します。スクリプトは下記のようなものです。なお、encoder.php, decoder.php は、両方UTF-8でエンコードしたスクリプトです。 --------------------------------------------------------------------------------------------------------- ジャンプ元:[encoder.php] <!doctype html> <html> <head><title>URLエンコード</title> <meta charset="UTF-8"> </head> <body> <br><br> <center> <?php $input = "空条"; $from = 1; $input2 = urlencode($input); $from2 = urlencode($from); $query_string = 'name='.$input2.'&from='.$from2; echo '<a href="decoder.php?'.htmlspecialchars($query_string, ENT_QUOTES, 'UTF-8').'">エンコード</a>'; ?> </center> </body> </html> -------------------------------------------------------------------------------------------- ジャンプ先「decoder.php」 <?php $name1 = $_GET['name']; $from1 = $_GET['from']; $name2 = urldecode($_GET['name']); $from2 = urldecode($_GET['from']); echo 'デコード前 '; echo '名前:'.$name1.' フロム:'.$from1.'<br>'; echo 'デコード後 '; echo '名前:'.$name2.' フロム:'.$from2; ?>

    • 締切済み
    • PHP
  • URLエンコードされたデータを戻すには

    POSTでCGIに渡す文字列はURLエンコードされていて、元に戻すにはデコードが必要ですが、もともとURLエンコードされたデータをデコードしたデータにできないでしょうか。 普通は、 読める文字→URLエンコード→CGIによる処理→URLデコード→読める文字 ですが、 もとのデータがURLエンコードされた状態だと、 URLエンコードされた文字→URLエンコード→CGIによるURLデコード→URLエンコードされた文字 となってしまいます。 たとえば、「%82%a0%82%a0%82%a0」というデータ形式から、「あああ」というデータを得たいのです。

  • URLエンコードについて

    「 † 」 の文字をUTF-8 でURLエンコードした時の値が2種類あるんでしょうか。 以下の2つのURLエンコードした文字を %EF%BC%8D %E2%80%A0 URLエンコード/ デコードの結果を出力してくれる こちらのサイトと https://www.tagindex.com/tool/url.html こちらのサイト https://tech-unlimited.com/urlencode.html で結果が異なるみたいです。 なぜこういった結果が異なる状況が生まれるのでしょうか そして正しいのはどちらなのでしょうか

  • Ethnaを利用したURLパラメータのマルチバイト文字とエンコード処理

    前画面よりhttp://localhost/?action_abc=true&test=あいうえお という画面へアクセスした時、 abc画面でtestパラメータを出力すると何故かShift_JISで表示されてしまい、 文字化けを起こしてしまいます。 (前画面・abc画面のactionやview、テンプレートはEUC-JPで作成、 URLパラメータにはurlencode()、urldecode()を使用) その為、出力する前にmb_convert_encoding()を使用しなければならない羽目になっています。 EthnaかPHPの仕様上、URLパラメータは必ずShift_JISになってしまうのでしょうか? また同じ関係で、urlencode()をした時点で、IEだと%~%~・・・と全ての文字が エンコードされるのですが、Firefoxだとhtmlspecialchars()のような動作をし、 エンコードが上手く出来ません。 (Firefoxの仕様上、そのリンクを押した時点でマルチバイトはエンコードされるようですが) 正しくエンコード・デコードさせる方法としてはどうするのが良いのでしょうか? どなたかご教示願います。

    • ベストアンサー
    • PHP
  • URLのエンコードについて

    JavaScriptで、JSON形式で渡ってきたデータを読んで、一部、文字列を結合して URLを作るんですが、その際のエンコードは encUrl= 'http://test.com/' + encodeURIComponent(xxx) + '/'; (xxxがjsonからきたデータ) で大丈夫でしょうか? たとえば.NETで言うところのHttpUtility.UrlEncodeと同じことがしたいのですが、 URIエンコードだとたぶん違いますよね…。 何を使えばUrlEncodeが出来るのでしょうか。

  • 半角文字と全角文字のencodeのちがい

    お世話になります。 Linux JSP-Servletにて開発を行っているのですが。 JSPにて、半角の「ア」と全角の「あ」をURLEncoder.encodeでエンコードし、Servletに送信し、 Servlet内でURLDecoder.decodeでデコードしようとしているのですが、半角の「ア」はうまくencode,decodeされている(デバッグで出力すると「ア」と表示されている)のですが、全角の「あ」はうまくdecodeして「あ」と出力されません、URLEncode、URLDecodeは全角文字では使用できないのでしょうか? Linuxにて全角日本語を扱うときの方法について ご存知のかたよろしくお願いします。

    • ベストアンサー
    • Java
  • javaでエンコードがうまくいかない

    ウエダをs-jisにエンコードしたいのですが、うまくいきません。 エンコードフォーム(http://home.kendomo.net/board/decode/decode.php )使用 結果:%83E%83G%83_ java( String urlu = URLEncoder.encode(url , "SJIS");)使用 結果:%83%45%83%47%83%5F エンコードされた出力結果が異なります。 なぜでしょうか? また、エンコードフォームのエンコード形式(SJIS)でエンコードしたいのですが、 どうしたらよいでしょうか? もし、JAVAでできないなら、EXCELやフリーソフトで エンコードしたいのですが、何かよい手はないでしょうか? ご存知の方教えてください。宜しくお願い致します。

    • ベストアンサー
    • Java
  • URLデコードについて

    こんばんわ。 .netFrameworkにSystem::Web::HttpUtility::UrlDecodeというURLデコード関数がありますが、.netFrameworkを使用しないでURL文字列をデコードできる関数はあるのでしょうか?

  • PHPとjavascriptで共通なエンコード方法

    PHPからjavascriptにバイナリデータ(16バイト程度)を受け渡す 処理を作成しているのですが、うまく動作しないので、相談します。 バイナリデータをエンコードしてPHPからjavascriptに 以下の流れで引き渡しています。 (1)PHPのbase64_encodeでバイナリデータをエンコード (2)エンコードしたデータをjavascriptに出力 (3)javascriptでデータをデコード (3)のデコードには次のページのbase64.jsなど、いくつかの デコード方法を試してみました。 http://www.onicos.com/staff/iz/amuse/javascript/expert/ しかしながら(1)の元のデータと(3)でデコードしたデータが 一致しません。 質問したいのは以下の2点です。 ・PHPのbase64_encodeとjavascriptのbase64エンコードは  一般的に方式が違うのでしょうか。同じbase64なので  同じコードが生成されると考えたのですが、そうでは  ないのでしょうか。 ・base64_encodeでも、その他の方法でもかまわないので  PHPとjavascriptで共通なエンコード方式、あるいは  PHP上のバイナリデータをjavascriptに正しく受け渡す  方法があれば教えて下さい。 よろしくお願いします。

  • Perl/CGIでのエンコード方法

    perlを使ってプログラムを書いています。 そこで困ったことが発生しております。 会員用CGIでフォーム上にIDとパスを入力するとログインできるプログラムです。 フォームにIDとパスを入力すると入室できますがログイン後、 http://www.*****.net/bbs.cgi?mode=check&ID=あゆ&PASS=0000 のようになったURLをクリックすると「ページが見つかりません」400エラーがでます。 IDが「あ」ではじまるものだけがこのような症状になります。 エンコード処理されていないからと思うのですが、これを正常な受け渡しをするにはどの辺りの場所にエンコード処理とデコード処理を書けばいいのでしょうか? ただ、Aサーバーでは発生しないのにBサーバーでは発生します。サーバーにも依存するものでしょうか? たいへん困っています。 お手数かけますが何卒宜しくお願いします

    • ベストアンサー
    • CGI

専門家に質問してみよう