通过 Applescript 执行 shell 脚本的变音符号/变音符号

Diacritics / Umlauts via Applescript to do shell script

在 Applescript 中,我试图将我收到的 URL 作为参数传递给 do shell script 命令以将其与 curl 一起使用。

对于常规字符,该过程运行良好,但一旦我的论点包含变音符号等特殊字符,它就会变得很古怪。

curl 确实下载了一些东西,但将字母 Ü 替换为 Ã 等,这当然不会让我得到正确的结果。

我需要做什么才能让它工作?我对 Applescript 和编码问题都不是很熟练。

我目前的设置如下:

set download_URL to item 1 of arguments
do shell script "curl " & download_URL & " > targetFile.html"

发生的一些例子:

Äquivozität ---> Ãquivozität
Ökolikör ---> Ãkolikör
Übermütigkeit ---> Ãbermütigkeit
Schweißfuß ---> SchweiÃfuÃ

这让我更加困惑了。所有 Ä、Ö、Ü 和 ß 都呈现为 Ã,但在此处的编辑蒙版中以及在相关站点之一中,它们都呈现为如图所示。

此外,通过对 html-文件的一些业余挖掘,我发现我需要传递字母 %C3%9C 而不是字母 Ü。所以整个过程确实有效,如果我通过 %C3%9Cbermut 而不是 Übermut。但是,我当然想避免为所有变音符号创建翻译 table。

有人能弄清楚这里发生了什么具体的编码问题吗?

经过更多研究,我发现我需要 urlEncode 我的字符串。这样,字母 Ü 将被替换为 %C3%9C 并且它适用于我的目的。

Applescript 本身似乎不支持此功能,但可以使用 php 进行转换。我在这里找到了方法:https://discussions.apple.com/message/9801376#9801376

因此,就我而言,我是这样使用它的:

set keyword to item 1 of arguments

set encodedKeyword to do shell script "php -r 'echo trim(urlencode(" & "\"" & keyword & "" & "\"));'"

do shell script "curl https://www.myUrl.com/" & encodedKeyword & ".html > targetFile"

这种方式,对我有用。 如果有更好的方法 - 也许可以直接在 Applescript 中使用 - 请随时 post 另一个答案,然后我会更改已接受的答案。