AppleScript — символы с акцентом

У меня проблема со специальными символами в AppleScript (сервис в Automator). Выбранный текст (название книги) является вводом (титры в скрипте), а цель — отобразить в safari результат расширенного исследования этой книги на noosfere.org

Это нормально, когда в выделенном тексте нет символов ударения. Но если титр равен сфере влияния : в окне отображения (используется только для тестирования) "сфера влияния" правильно пишется с "è". Но в сафари, в области исследований на сайте, у меня есть «сфера влияния».

  on run {titre, parameters}
       set url_noosfere_titre to "https://www.noosfere.org/livres/noosearch.asp?Mots=" & titre & "&Envoyer=Envoyer&livres=livres&ModeRecherche=AND&ModeMoteur=MOTSCLEFS&recherche=1"

     display dialog (url_noosfere_titre as text) buttons {"OK", "annulé"}
     set retour to button returned of result
     if retour is equal to "OK" then
         open location url_noosfere_titre
     end if
  end run

person user9560643    schedule 27.03.2018    source источник


Ответы (1)


URL с акцентами очень беспорядочный.

В основном URL-адреса должны быть преобразованы с использованием 2 шестнадцатеричных значений с escape-символом «%». Например, «é» следует преобразовать в %C3%A8.

Однако результат зависит от веб-браузера (IE, Safari, Chrome, Firefox) и версии. Иногда браузер выполняет собственное преобразование, которого вы не можете избежать.

В вашем случае, вероятно, более эффективно передумать и не пытаться заполнить URL-адрес словом, которое вы ищете, а вместо этого просто отобразить веб-страницу и ввести свое слово непосредственно в область поиска на странице, затем нажмите кнопку отправки («Посланник» на французском языке).

В Applescript вы можете управлять веб-страницей с помощью команд Javascript. Приведенный ниже сценарий отображает вашу веб-страницу, добавьте слово для поиска в правильное поле, выберите область поиска и отправьте запрос, нажав кнопку отправки.

Делая это, никаких проблем с акцентом вообще!

set BaseURL to "https://www.noosfere.org/livres/noosearch.asp?Mots"
set MyWord to "sphère"
tell application "Safari"
    open location BaseURL
    activate
    delay 1 -- time to open the new window. Could be replaced by checking     javascript load = complete
    tell document 1
        -- fill the search field of the page with expression to search
        do JavaScript "document.getElementsByClassName('liste')[0].firstElementChild.children[1].value = '" & MyWord & "'"
        -- check boxes for search area are 1, 3, 5,...17, 19 in "littérature" block
        -- in this example, select the 2nd check box, so index is 3 (="Livres")
        do JavaScript "document.getElementById('litt').children[3].click()"
        -- click on the search button of the page (="Envoyer")
        do JavaScript "document.getElementsByClassName('liste')[0].firstElementChild.children[2].click()"
    end tell
end tell

к вашему сведению, я был вынужден добавить выбор области поиска (здесь я устанавливаю флажок для всех книг = «Livres»), потому что по крайней мере 1 выбор в этой области является обязательным.

person pbell    schedule 28.03.2018