在Applescript中,我试图将接收到的URL作为参数传递给do shell script命令,以便将其与curl一起使用。
对于规则字符,这个过程工作得很好,但是只要我的参数包含像Umlauts这样的特殊字符,它就会变得很时髦。
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Ã这使我的困惑更加严重。All、of、one和呈现为but,但在编辑掩码中和在所涉站点中,它们都呈现如下图像所示。

另外,通过对html文件的一些业余挖掘,我发现我需要传递字母Ü,而不是字母%C3%9C。因此,如果我通过%C3%9Cbermut而不是Übermut,整个过程就会正常工作。然而,我当然想避免为所有的解说词创建一个翻译表。
有人能弄清楚这里到底发生了什么具体的编码问题吗?
发布于 2016-02-28 17:10:25
经过更多的研究,我发现了我需要的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中可以直接使用的东西--可以随意发布另一个答案,那么我将更改接受的答案。
https://stackoverflow.com/questions/35665516
复制相似问题