AppleScript, Finder en accenten
1 juli 2008 - 14:55   
geplaatst door: Willemien
als ik met AppleScript de naam van een bestand aan de Finder vraag en dat met offset in stukjes probeer te hakken dan gaat dat fout als er karakters met accenten in voorkomen. ik heb een testscriptje gemaakt (dit is niet een heel script, maar losse teststukjes):


tell application "Finder"
   set aString to name of folder "école" of (path to desktop folder)
end tell
get offset of "c" in aString -- result: 3
get text 3 of aString -- result: o
get id of (text 1 of aString) -- result: {101, 769}

set aString to "école" -- école is gekopieerd in de Finder en geplakt in Scripteditor.
get offset of "c" in aString -- result: 3
get text 3 of aString -- result: o
get id of (text 1 of aString) -- result: {101, 769}

set aString to "école" -- é is getypt, option-e, e.
get offset of "c" in aString -- result: 2
get text 2 of aString -- result: c
get id of (text 1 of aString) -- result: 233


ik heb het ook in Cocoa met Scripting Bridge geprobeerd en krijg daar hetzelfde probleem, behalve dat cocoa's NSString ook de é van de Finder als 2 karakters ziet.

doe ik iets fout of is dit een bug in de Finder?
is er een manier om de namen uit de Finder in AppleScript naar normale strings te converteren?

ps: MacOS 10.5.4

AppleScript, Finder en accenten
1 juli 2008 - 19:35    reactie #1
geplaatst door: hitchhiker
Probeer het eens met unicode text strings.

set aString to name of folder "école" of (path to desktop folder) as unicode text.
De offset van 'c' in 'école' wordt dan idd 2 i.p.v. 3
AppleScript, Finder en accenten
2 juli 2008 - 12:10    reactie #2
geplaatst door: Willemien
bedankt voor de tip maar "as unicode text" helpt niet (ik heb het gebprobeerd). volgens de release notes van AppleScript  10.5 is AppleScript helemaal Unicode. http://developer.apple.com/releasenotes/AppleScript/RN-AppleScript/index.html

alle tekst is class text, uit de release notes: "For compatibility with pre-2.0 AppleScript, string and Unicode text are still defined, but are considered synonyms for text."

ook uit de release notes: "For example, “é” may be encoded as either U+00E9 (LATIN SMALL LETTER E WITH ACUTE) or as U+0065 (LATIN SMALL LETTER E), U+0301 (COMBINING ACUTE ACCENT). Nonetheless, AppleScript 2.0 will count both as one character, where older versions counted the base character and combining mark separately."
dit werkt bij mij niet, dan is het dus niet een bug in de Finder maar in AppleScript. dan maar eromheen knutselen met text item delimiters ipv offset.

NSString's compare zegt overigens wel dat de verschillende é's hetzelfde zijn als NSLiteralSearch uit staat. ik gebruikte isEqualToString maar die vergelijkt literal.

AppleScript, Finder en accenten
2 augustus 2008 - 23:44    reactie #3
geplaatst door: hitchhiker
Dat Unicode verhaal geldt pas vanaf 10.5 waarin Applescript 2.0 zit.
Ik doe het nog met 10.4.11 en AppleScript 1.10.7.

Converteren heb je dus al geprobeerd, kennelijk werkt dat dus niet.