SSブログ

URLエンコード&デコードを簡単に [AppleScript辞書はつくれるか?]

image220823b.jpg

 

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スクリプトだったりと統一感がないが、簡単にするためだ、許してほしい。

 

参考サイト:

https://qiita.com/sa9ra4ma/items/358c936bc481a4c54866

https://inokara.hateblo.jp/entry/2020/12/06/090828

 
今回の記事を含めて『資料のページ』を作ってます。
 
 今回の記事についてコメントをいただきましたので、記事を追加させていただきました。 
 
 

コメントをいただきました。ありがとうございます。

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の強みだとおみますので、いろいろと積極的に使っていきたいと思っていたりします。

 
 

nice!(0)  コメント(2) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 2

かのつ

コメントありがとうございます。
ご紹介いただいたコードについては、記事を追加させていただきましたので、読んでいただけたら幸いです。
by かのつ (2022-08-24 12:21) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。