在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-File中的一些业余挖掘,我发现代替字母Ü
,我需要传递字母%C3%9C
。因此,如果我通过%C3%9Cbermut
而不是Übermut
,整个过程确实有效。但是,我当然希望避免为所有变音符号创建转换表。
有人可以知道,这里发生了什么具体的编码问题?
答案 0 :(得分:0)
经过一些研究,我发现我需要 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中起作用的东西 - 随意发布另一个答案,那么我将改变接受的答案。