通过 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 另一个答案,然后我会更改已接受的答案。
在 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 另一个答案,然后我会更改已接受的答案。