• ベストアンサー

GETで日本語を暗号化する

SHOO-3の回答

  • ベストアンサー
  • SHOO-3
  • ベストアンサー率56% (28/50)
回答No.4

No.3です。なんかいろいろ間違えてますね。 (EncodeモジュールでShift_JISに変換しています) これは間違いです。消し忘れました…orz $str =~ Encode::from_to($str, 'Guess', 'euc-jp'); らへんの $str =~ って部分、無くても動きます。 というか、無いほうが普通かな…OTZ ついでに、もしかしたら逆に、エスケープする方法 (日本語文字→%93%FA%96%7B%8C%EA%95%B6%8E%9A見たいな変換) を訊いていたのかもしれない(見当違いな回答をしていたかもしれない)ので、そっちも答えておきます。 No.2さんのURI::Escapeでやる方法が簡単でいいと思いますが、正規表現で変換すると、 $str =~ s/(\W)/'%' . unpack('H2', $1)/eg; となります。これがもっとも実行速度が速い方法らしいです。実際見てみても、URI::Escapeのものよりも、1.5倍から2倍くらい速いみたいです。 ちなみに、アンエスケープする方法で、URI::Escapeを使った場合、 use URI::Escape; $safe = uri_unescape("%E6%A4%9C%E7%B4%A2%E6%96%87%E5%AD%97%E5%88%97"); とすればアンエスケープしてくれますが、UCS2(UTF-16、最近のIEのJavascriptではこうやって変換してくることも。)はアンエスケープしてくれないかもしれません。

if_else
質問者

お礼

上の方法で無事暗号化することができました。 ありがとうございました。

関連するQ&A

  • フォーム送信とURLエンコードについて

    CGI&PHP初心者です。 フォームのデータ送信とURLエンコードについて、お尋ねします。 method="GET" のフォームで、検索フォームをつくりたいとおもっています。 日本語も含めた検索語をフォーム送信したいと考えていますが、 送信の結果、エンコードされずにそのままブラウザのURL欄に入力した日本語が表示されてしまいます。 (ただ、メモ帳などにURLをコピーペーストするとURLエンコードがされているようです。) googleでは検索結果のアドレス欄にURLエンコードされた文字列がでているが、 同じように検索結果のアドレス欄にはURLエンコードされた文字列をだしたい。 URLに日本語をださずにURLエンコードさせた文字列を表示させるには、 どうすればいいのでしょうか? 補足:できるかぎり検索処理が重くならないにしたいと思います。     開発環境PHP&MySQL     動作環境Chrome のバージョン 38.0

    • ベストアンサー
    • CGI
  • ホームページのURLに日本語を使いたい

    http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=DVXA,DVXA:2005-16,DVXA:ja&q=%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2 ウィキペディア を グーグルで検索(上記URL)すると、 ja.wikipedia.org/wiki/ウィキペディア - 66k - 2005 というURLがヒットします。 通常、URLには、日本語が入っていませんが、今回の検索結果には、日本語が入っています。 このように、URLに日本語を入れるにはどうしたらいいのでしょうか? また、このように、日本語に最適化することで、グーグルのヒット率はあがるものでしょうか? 以上、宜しくお願い致します。

  • PHPのGETとPOSTの処理を学習中なのですが、valueに日本語が

    PHPのGETとPOSTの処理を学習中なのですが、valueに日本語が入力されていた場合の処理について分からない点があります。 POSTやGETから送信された日本語の値がどの時点で再び日本語に変換されているのかということです。 たとえば以下のようなphpファイルにブラウザからアクセスした場合、 <?php $static = $_GET["static"]; print $static; ?> <form method="GET"> <textarea name="static"> 静的 </textarea> <input type="submit" name="submit_button" value=" 送 信 " /> </form> ブラウザのアドレスバーには"?static=静的%0D%0A&submit_button=+送+信+"という文字列が表示されています。 この"%0D%0"というのは、URLエンコードされた文字列らしいのですが、上記のphpファイル上の"print $static;"部分の表示ではしっかりと日本語として表示されています。 私は上記のソース上のどこの部分でURLエンコードされた文字列が再び日本語として表示されるよう変換されているか分かりません。 何卒ご教授頂けますようお願い致します。

    • ベストアンサー
    • PHP
  • お別れの手紙の暗号解読

    お別れの手紙の暗号解読というクイズなのですが 全然わかりません よかったら誰か答えを教えてください http://quiz-tairiku.com/q.cgi?mode=view&no=26

  • 日本語の変換について

    cgi&Perl初心者です。"greetings.txt"というテキストファイルから指定文字列を検索して出力させるというcgiスクリプトを作りたいのですが、日本語の変換がうまくいきません。バージョンは5.8.8を使っているのですが、encodeモジュールやjcodeを使ってみたのですがどうもうまくいきません…。使い方が間違っているのは明らかなのですが、調べても自分にはどうしてもわからないのです。どなたか教えていただけませんでしょうか?よろしくお願いします。 ちなみに使用しているスクリプトです。 #!C:\Perl\bin\perl use strict; use CGI; my $target_file = "greetings.txt"; my $q = new CGI; print $q->header(), $q->start_html(-title=>'search'); print $q->startform(-method => 'GET', -name => 'myform'), $q->textfield('key'), $q->submit('ok'), $q->endform, "\n"; my $key = quotemeta $q->param('key'); if ($key !~ /^\s*$/) { if (open(F, $target_file)) { my $r = ""; while (<F>) { if (s|($key)|<font color="red">$1</font>|gi) { $r .= $_; } } $r = "NOT FOUND" if ($r eq ""); print "<pre>$r</pre>\n"; } else { print "ERROR: Can't open '$target_file'\n"; } } print $q->end_html(), "\n";

  • CGI.pmで日本語をURLエンコードするとおかしい

    CGI.pmで日本語をURLエンコードするとおかしくなります。 print($q->unescape($q->escape('あ')), "\n"); このコードは文字'あ'をURLエンコードしたものをURLデコードして表示するはずです。 すなわち'あ'と表示するはずです。 しかし実際には'a??'と表示されてしまいます・・・ 何か他の関数をかまさないといけないのでしょうか???

    • ベストアンサー
    • Perl
  • Google検索文字列で日本語入れると落ちる

    お世話になります。WinXPで、IE6.01を使用しています。 Google検索文字列で日本語入力ONにして一文字入れると 頻繁にGoogleがかってに終了してしまいます。 かなりの頻度で発生します。 半角英数を一文字入れて、それから日本語入力ONにすると正常に動作します。 日本語入力はIME2003です。 経験のある方ご指導お願いいたします。

  • httpでもログインフォームは暗号化される?

    phpでトップページログインフォームより会員がログインできる仕組みを作りたいと思っています。 この場合、ログイン認証部分のみSSL通信をおこないたいと考えています。 この場合、 トップページをhttps://toppage.html(sあり)とし、 ログインフォームのaction先を、http://check.php(sなし)のように考えていたのですが、 http://q-shu.net/futsukaichi/ こちらのサイトURLは、トップページがhttpになっており、 会員ログインフォームのaction先がhttps:〇〇〇 となっています。 てっきりログインフォームのあるページURLはhttpsでないと暗号化されないと思っていたのですが、 action先がhttpsになっていれば暗号化されてデータは送られるのでしょうか? ご回答どうかよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 日本語が・・・・

    Yahoo!なんかで検索すると・・・ アドレス部分に検索した文字列が表示されていると思います ABCDとアルファベットで検索したなら、アドレスのsearchの後ろがABCDと、そのまま表示されていますが、 日本語で、あいうえおと検索すると、 %A4%A2%A4%A4%A4%A6%A4%A8%A4%AA という感じになっています。 このように、日本語を%と英数字に変換したい場合はどのようにすると良いでしょうか?

  • たまに日本語が打てない

    たまに、ウィンドウ内の検索フォームやメールフォームへ文字を入力しようとすると、日本語がうてない場合があります。 半角英数字は打てます。 そして、打てない時はそのウィンドウを閉じ、新しいウィンドウを開くとそちらだけ打てる事があります。 全角が打てるウィンドウと、打てないウィンドウがなぜか出てきます。 (同じYahoo!を表示していても) これはどうしてですか? 起動した直後でもおこったり、おこらなかったりします。 メモ帳などには日本語が打てるので、ウィンドウ内のみです。(IEです)