2016-02-27 125 views
0

在一个Applescript中,我试图传递一个URL作为参数传递给一个do shell script命令,以便在curl中使用它。通过Applescript做变音符号/变音符做shell脚本

使用常规字符的过程可以正常工作,但只要我的参数包含像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à 

这让我困惑更大。所有Ä,Ö,Ü和ß都呈现为Ã,但都位于此处的编辑蒙版中以及它们呈现的其中一个网站中,如此图中所示。

Umlaut rendering

而且,通过在HTML的文件中的一些业余的挖掘,我想通了,与其信Ü,我需要通过信件%C3%9C。因此,如果我通过%C3%9Cbermut而不是Übermut,则整个过程确实有效。但是,我当然希望避免为所有变音符创建翻译表。

有人可以弄清楚,在这里发生了什么特定的编码问题?

+0

你能提供一些具体的替代例子吗? –

+0

@CraigSmith感谢您的关注,我编辑了这篇文章。 – mdomino

+0

你有没有试过(download_URL为Unicode文本)?我知道AppleScript是Unicode兼容的,所以如果需要该代码,它应该只需要:(download_URL as text)。这是一个很大的,但试试看。 –

回答

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中工作的东西 - 随时发布另一个答案,那么我会改变接受的答案。