A few days ago, Shigeru Harada of MacFreak contacted me with a strange problem: he was unable to schedule backups with SuperDuper. Every time he tried, he’d get an error that the script wouldn’t compile.
In the past, we’ve seen this when drives were named with slash characters, but his were quite normal.
After some back-and-forth, I had him take the script template we use, and try to compile it himself, in Script Editor. Shockingly—it failed to compile, and the problem didn’t make any sense.
If you’re familiar with the Japanese keyboard, the backslash key () is replaced by the symbol for the Yen (¥). Way back when, we did a Japanese version of BRIEF, so I was familiar with this phenomenon—paths would be separated by Yen symbols, but everything worked as expected.
But, in AppleScript, it seemed the backslash/yen “swap” completely prevented backslash from doing its normal thing, so this:
set the URL_A_chars to “$+!’,?;&@=#%><{}[]"~`^\|*()”
completely failed to compile, because it looked like this:set the URL_A_chars to “$+!’,?;&@=#%><{}[]¥"~`^¥¥|*()”
and ¥ didn’t escape as you’d expect.A huge surprise to me. I did find it discussed in one place (thank you Google and Takaaki Naganoya), and also a reference to bug fixes in Tiger (Backslash characters and Yen sign characters will now compile correctly when the primary language is set to Japanese. [3765766]), but it didn’t seem to be fixed for him—probably because he’s using Panther (which we need to support).
Anyway, workaround in hand, I modified the script to:
set quoteChar to ASCII character 34
set backslashChar to ASCII character 92
set the URL_A_chars to “$+!’,?;&@=#%><{}[]” & quoteChar & “~`^” & backslashChar & “|*()”