Some times you may need convert text to utf-8 notation for web transmission, so you can pass “c%C3%A1spita” instead of “cáspita” (eg, if you are filling a form using curl).
These are the steps:
-Convert the input text to utf-8 (and grab its ASCII representation).
-Convert every unsafe byte to its hexadecimal equivalent.
This is only a method, but you can ellaborate yours one:
tell app "Smile" to escapeURL "cáspita --> "c%C3%A1spita"
Well, well… I’ll write some more code for the vanilla fans…
encodeTextUTF8("cáspita") --> "c%C3%A1spita"
to encodeTextUTF8(k)
set someSafeChars to "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_."
set f to {}
repeat with i from 1 to (count k)
set c to character i of k
if c is not in someSafeChars then
set tmp to text2utf8(c) --> transform to plain-ascii version of utf8
set c to "%" & getHex(tmp's item 1)
try --> may be two chars or not
set c to c & "%" & getHex(tmp's item 2)
end try
end if
set f's end to c
end repeat
return f as text
end encodeTextUTF8
to text2utf8(t)
set theFile to "/tmp/utf8stuff" as POSIX file
set f to (open for access theFile with write permission)
set eof of f to 0
write t to f as «class utf8»
close access f
read theFile
end text2utf8
to getHex(this_string)
this_string as C string
try
result * 512
on error msg
return text from character 22 of msg to character ((offset of "00» into type number" in msg) - 1) of msg
end try
end getHex