I am attempting to reconcile a URL string accepted by the command open location with the URL string returned by Safari’s URL string. The check mark character “✓” accepted by the open location does not match the %E2%9C%93 returned by Safari’s URL string.
set TargetURL to "https://go.daisybill.com/queries/patients?utf8=✓"
tell application "Safari"
open location TargetURL
tell current tab of window 1
set SafariURL to its URL -->"https://go.daisybill.com/queries/patients?utf8=%E2%9C%93"
end tell
end tell
if SafariURL is TargetURL then
return true
else
return false
end if
How can I convert open location’s URL to Safari’s URL by converting the check mark character “✓” to %E2%9C%93 or vice versa, without using Applescript’s text items delimiters to substitute one for the other?
This is known as URL encoding <–> decoding. The most effective way I know, is using AsObjC:
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
-- vise
set encodedTargetURL to my encodeURLencoding("https://go.daisybill.com/queries/patients?utf8=✓")
-- versa (uncomment following code line to test)
-- set decodedTargetURL to my decodeURLencoding(encodedTargetURL)
on encodeURLencoding(origStr as string)
set aStr to current application's NSString's stringWithString:origStr
set encodedStr to aStr's stringByAddingPercentEscapesUsingEncoding:(current application's NSUTF8StringEncoding)
return encodedStr as string
end encodeURLencoding
on decodeURLencoding(encodedStr)
set aStr to current application's NSString's stringWithString:encodedStr
set bStr to aStr's stringByReplacingPercentEscapesUsingEncoding:(current application's NSUTF8StringEncoding)
return bStr as string
end decodeURLencoding