• ベストアンサー

AppleScript(or Perl)でURLエンコードするには?

AppleScriptでURLエンコードするにはどのようにすれば良いのでしょう? Perlを使えばできそうなのですがうまくいきません。例えば”あ”をエンコードしようとして、do shell scriptコマンドから echo 'あ' | perl -pe '~s/([^?w ])/"%".unpack("H2", $1)/eg;' としても"%a4%a2"が正しいのですが、"%e3%81%82%0a"が返ってきます。 暗ーいトンネルに入ったような状態です。どなたかお力をお借りできないでしょうか?

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

  • ベストアンサー
  • hofuhofu
  • ベストアンサー率70% (336/476)
回答No.1

echoの出力の結果がUTF-8になってしまっているようです(%e3%81%82%0aをUTF-8としてデコードすると'あ'+LFになります)。 http://developer.apple.com/ja/technotes/tn2065.html#Section4 http://www.tagindex.com/tool/url.html 期待されている結果はEUCなので、どこかで文字コードを変換する必要がありますね。 MacOSXはほとんど使ったことが無いので詳しいことはわかりませんが、iconvを使えばできるかもしれません。 http://homepage.mac.com/travellers/blog/C746134881/

参考URL:
http://developer.apple.com/ja/technotes/tn2065.html#Section4
AppleScripter
質問者

お礼

ありがとうございます!以下のようにiConvを使ってできました。 echo 'あ'| iconv -f UTF8 -t EUCJP | perl -pe '~s/([^?w ])/"%".unpack("H2", $1)/eg;' 悩んだ日々はなんだったのでしょう…。本当に助かりました。

関連するQ&A

  • [Perl] unpackで不要文字にエンコード

    Perl CGIについてです。 文字列をエンコードしようと次のようにしてみました。 $val1 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $val2 =~ s/(\W)/sprintf("%%%02X", unpack("C", $1))/eg; $va1は問題なくエンコードされ、デコードも元文字に戻ったのですが、 $va2のエンコード文字に不要な'25'が含まれるようになってしまいました。 例:「ガム」をエンコード >> %A5%AC%A5%E0  を期待していたのですが、結果は %25A5%25AC%25A5%25E0 と不要に'25'が含まれてしまいました。unpackの文が悪いのでしょうか?ご教示ください。

    • ベストアンサー
    • CGI
  • chmodをapplescriptで実行したい。

    はじめまして AppleScript初心者です。 OSXServer10.4.8でファイル共有しています。 フォルダのアクセス権を定期的にchownコマンドで変更したいと思いますが、うまくいきません。 Applescriptでchmodコマンドを実行するものを用意しましたが、スクリプトエディタでスクリプトファイルを実行するとchmodでアクセス権が変更されるのですが、このスクリプトをcrontabに登録して特定の時間に実行するように設定すると機能しません。 AppleScript//////////////////// set cmdchown to "/usr/sbin/chown -R test /test1" do shell script cmdchown password "password" with administrator privileges set cmdchmod to "/bin/chmod -R 755 /test1" do shell script cmdchmod password "password" with administrator privileges ////////////////////////// 定期的にオーナーとアクセス権を変更するにはどうすれば良いですか? よろしくお願いします。

  • utf-8の文字列に対してURLエンコードを行なうには?

    最近 perlをutf-8で書き始めたのですが、文字コードではまっています。 cgiの内部から別のcgiへpostで全角文字を送る場合 URLエンコードしてから送ると思うのですが 文字コードがutf-8の時、どのようにURLエンコードしたら 良いのか分からず困っています。どなたかご存知でしょうか? ちなみに文字を受ける方のcgiでは以下の様にURLデコードしています。 $data =~ tr/+/ /; $data =~ s/%([0-9A-Fa-f][0-9A-Fa-f])/pack('H2', $1)/eg; 試用しているperlのバージョンはperl5.8です、よろしくお願いします。

    • ベストアンサー
    • Perl
  • Applescriptで一番上のウィンドウを自動で撮影する方法を探して

    Applescriptで一番上のウィンドウを自動で撮影する方法を探しています。 do shell script "screencapture -iW" とすれば、惜しい所までいくのですが、最後カメラマークになってマウスのボタンを押さないと撮影できません。 ・自動で撮影するコマンド もしくは ・マウスのボタンを押すスクリプト、または一番上のウィンドウを指定するスクリプト を教えてもらえないでしょうか。 よろしくお願い致します。

    • ベストアンサー
    • Mac
  • エンコードについて

    「タイトル」というテキストを 下記のコードでエンコードすると、 # 検索用エンコード $encode = $code; $encode =~ s/(\W)/'%' . unpack("H2", $1)/eg; $encode =~ tr/ /+/; %83%5e%83C%83g%83%8b となりますが、 %E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB のようにしたいのです。 上記の検索用エンコードをどのように書き換えればできるでしょうか。 似たような記事もありましたが、明確な答えがありませんでした。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • URLエンコードの正規表現のoの効果

    http://ash.jp/perl/tips_perl01.htm のサイトに # URLエンコード $arg =~ s/(\W)/'%'.unpack("H2", $1)/ego; と書かれていましたが、最後のoの効果が分かりません。 $argが何という文字であったなら、そのoが有る場合と 無い場合の違いが分かるのか、具体的な$argの値と一緒に 説明してください。

    • ベストアンサー
    • Perl
  • Applescript での文字表示

    xcodeを使って、mac と walkmanの音楽を同期するアプリ作ろうと思っています。 プログラムは主にシェルスクリプト(bash)で書かれており、 同期自体は rsync を使っています。 applescriptでは上記シェルスクリプトを「do shell script 」で走らせ、 その標準出力を NSTextView に表示させています。 set text to (do shell script "rsync_script.sh") textView's setString_(text) ただし、この方法だとrsyncが終わった時点でしか、標準出力を表示出来ません。 どうにか、シェルスクリプト実行中に標準出力を表示させていく方法はありませんでしょうか?? また、NSTextViewでは、書き込む度に前の文字が上書きされてしまいますが、 消さずに追記していく方法はありますでしょうか? よろしくお願いします。 私の環境はこちらです。 mac os 10.6 xcode 3.26

    • ベストアンサー
    • Mac
  • 一般的な方法で『URLエンコード』ができません・・・

    よろしくお願いいたします。 テキストボックスに入力(「こんにちは」など)した値をもとに、Yahooで検索させたいのですが、以下の方法でエンコードしました。 sub url_encode($) { my $str = shift; $str =~ s/([^\w ])/'%'.unpack('H2', $1)/eg; $str =~ tr/ /+/; return $str; } そうしたところ、「/」や「:」も別の文字「%2f」「%3a」に変換されてしまい、Yahooのページが開きません。 ちなみにYahooで「こんにちは」と検索すると、URLが以下のようになります。 http://search.yahoo.co.jp/search?p=%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF&ei=UTF-8&fr=top_v2&x=wrt&meta=vc%3D テキストボックスに「こんにちは」と入力すして検索ボタンをクリックすると、上記のように変換させたいのです。 どのようにしてエンコードしたらよろしいのでしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • Perl
  • URLデコードした文字列からURLエンコード

    よろしくおねがいします。 質問掲示板の中にある検索で質問掲示板の中身を検索した時に、同時にGoogleでも検索しようとおもっています 初めにフォームから得られたクエリーをデコードして &jcode'convert(*val, 'sjis'); に変換しました。 これで得た文字列で質問掲示板の中身を検索します。 つぎに、この文字列をエンコードしてGoogleに渡そうと思いましたが、ここでつまずいてしまいました。 &jcode'convert(*sarchword,'euc','sjis'); #---------- $sarchword =~ s/([^\w ])/'%' . unpack('H2', $1)/eg; $sarchword =~ s/(\W)/'%'.unpack("H2", $1)/ego; #---------- #↑このどちらかを行ってから $sarchword =~ tr/ /+/; これでできると検索して出てきたのですが、それでも正しい結果を得ることができず、文字コードの変換も'euc'を'sjis'等といろいろ変換してみてもできずに困っています。エンコードした結果の文字コードがまったく別のコードになってしまうみたいなのです。 たとえば「あいうえお」と検索したときに、上の方法でエンコードすると「%a4%a2%a4%a4%a4%a6%a4%a8%a4%aa」という値になります。 正しい結果を得る方法を教えていただけないでしょうか。 意味がわかりませんでしたら、再度説明いたしますのでよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • UTF-8でのURLエンコード方法

    少し前に質問したのとあまり変わらない内容で恐縮ですが。。。(汗) Jcode.pmをサーバーにインストールし、< http://openlab.ring.gr.jp/Jcode/index-j.html >を参考にしてスクリプトにも組み込みました。 で、以下の命令で日本語をエンコードしてみましたが、Shift-JISに変換されました。(当たり前かもしれませんけど^-^;) $val =~ s/(\W)/'%' . unpack('H2', $1)/eg; UTF-8に変換したいのですが、どのような命令にすれば宜しいのでしょうか。 前回、Jcode.pmを使えというヒントを頂いたので、いけるかなと思い、自分なりにWeb上を調査しましたが力尽きました。(T-T) 宜しくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう