2016-02-27 126 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中工作的東西 - 隨時發佈另一個答案,那麼我會改變接受的答案。