URLエンコード&デコードを簡単に [AppleScript辞書はつくれるか?]
URLエンコード(%エンコード)を簡単にエンコードやデコードしたいと思い、いろいろ調べてみた。
なんと、それぞれ1行で作れるようだ。
Applescript |
|
|
|
set inputText to "ユーリ・ガガーリンの名言「地球は青かった」" set percentEncodeText to "%E3%81%98%E3%81%A4%E3%81%AF%E3%80%81%E5%9C%B0%E4%B8%8A%E3%81%AB%E3%81%84%E3%82%8B%E6%99%82%E3%81%AB%E8%80%83%E3%81%88%E3%82%89%E3%82%8C%E3%81%9F%E8%A8%80%E8%91%89%E3%81%A7%E3%81%82%E3%82%8B"
(* javascriptで%エンコード *) set outputText1 to run script ("encodeURIComponent(\"" & inputText & "\")") in "Javascript" log outputText1
(* shellでデコード *) set outputText2 to do shell script ("str='" & percentEncodeText & "' ; printf '%b\\n' \"${str//%/\\x}\" ;") log outputText2 |
JavaScriptだったりShellスクリプトだったりと統一感がないが、簡単にするためだ、許してほしい。
参考サイト:
コメントをいただきました。ありがとうございます。
『stringByRemovingPercentEncoding』を使えば良いとのお話ですね。勉強させていただきました。
もちろん、こちらのコードも使えました。しかしApplescriptで導入しようとすると、余計な準備が必要となるためそれなりに行数が増えますね。
Applescript |
|
|
|
use AppleScript version "2.7" use scripting additions use framework "Foundation"
(* %エンコード *) set percentEncodeText to "%E3%81%98%E3%81%A4%E3%81%AF%E3%80%81%E5%9C%B0%E4%B8%8A%E3%81%AB%E3%81%84%E3%82%8B%E6%99%82%E3%81%AB%E8%80%83%E3%81%88%E3%82%89%E3%82%8C%E3%81%9F%E8%A8%80%E8%91%89%E3%81%A7%E3%81%82%E3%82%8B"
set str to current application's class "NSString"'s stringWithString:percentEncodeText set str to str's stringByRemovingPercentEncoding set returnText to str as string log returnText
(* デコード *) set inputText to "ユーリ・ガガーリンの名言「地球は青かった」" as string
set str to current application's class "NSString"'s stringWithString:inputText set aCharacterSet to current application's class "NSCharacterSet"'s URLQueryAllowedCharacterSet() set str to str's stringByAddingPercentEncodingWithAllowedCharacters:aCharacterSet set returnText to str as string log returnText |
|
前準備のObjective-Cに機能を借りてくる部分が必要になったり |
|
や |
|
のようにやたらとコードが増えてしまい、なかなか難易度は高いのではないかと思います。 |
やや行数を減らす事もできると思いますが、1行がなかなか長いものになると思います。
あと、Objective-CとApplescriptでは文字の扱いが違うため、最初にApplescriptテキスト→Objective-Cテキスト変換を行い、最後にもObjective-Cテキスト→Applescriptテキストに戻す作業が必要となりますので、余計に行数が増えてしまうところが悩みどころですね。
AppleScriptはHigh Sierra以降、Scripting Bridgeという橋渡し的に他のプログラム言語を利用することができる便利機能があるので、Objective-C(Cocoa)に限らず、ShellスクリプトやJavascriptやPerlやPythonなどなど、使えるものは使うというスタンスで良いのではないのかと思います。
Applescriptは、自分の言語だけでやろうとするとできないことが多かったり、時間がかかったりすることが多々あります。今回のように複数の言語を借りてくることができるため、こちらでできなくても、あちらでできたりとかする場合があったりと、柔軟性が高くなるというところがApplescriptの強みだとおみますので、いろいろと積極的に使っていきたいと思っていたりします。
https://developer.apple.com/documentation/foundation/nsstring/1409569-removingpercentencoding
by お名前(必須) (2022-08-24 03:39)
コメントありがとうございます。
ご紹介いただいたコードについては、記事を追加させていただきましたので、読んでいただけたら幸いです。
by かのつ (2022-08-24 12:21)