URL-кодированный слеш в URL-адресе не работает в ссылках, не являющихся браузерами

URL-кодированный слеш в URL-адресе не работает в ссылках, не являющихся браузерами

Веб-сайтdoi2bib.orgищет код DOI для публикации и возвращает данные о публикации. Коды DOI включают косые черты, например:

10.1037/dev0000663

Получить данные для этой публикации можно двумя способами:

Во втором методе слеш в DOI должен быть закодирован в URL в %2f. URL без этой кодировки не работает. Таким образом,https://doi2bib.org/bib/10.1037/dev0000663не работает.

Вот в чем проблема. Если я скопирую рабочий URL

 https://doi2bib.org/bib/10.1037%2Fdev0000663

в MS Word или Excel, то оттуда ссылка не работает, а выдает сообщение об ошибке:

введите описание изображения здесь

Обратите внимание, что URL-адрес отображается правильно в этом сообщении об ошибке. Ключ к решению проблемы может быть в том, что появляется при наведении мыши на URL-адрес в Word:

введите описание изображения здесь

Обратите внимание, что здесь URL был декодирован, чтобы измениться %2Fна слеш. Если это тот URL, к которому Word действительно пытается обратиться, это объясняет, почему он терпит неудачу.

Я попробовал преобразовать %2Fв , %252Fчтобы посмотреть, отправит ли это правильный URL, но этого не происходит. Это приводит к сообщению об ошибке:

введите описание изображения здесь

и наведение курсора на URL-адрес предполагает, что Word просто преобразовал %252Fего в косую черту, а затем снова попытался перейти по неправильному URL-адресу:

введите описание изображения здесь

Помимо Word и Excel, ссылки также не работают в команде "Создать PDF из веб-страницы" Adobe Acrobat. Так что проблема не является специфичной для программ MS Office.

Как мне написать этот URL-адрес, чтобы Word и другие программы правильно по нему переходили?

решение1

Обходной путь: вместо DOI2bib используйте доставку метаданных CrossRef (документация:1,2). Библиографические данные могут быть возвращены в удобной для восприятия форме с использованием базовогопоиск метаданных, который может принимать DOI как в URL-кодировке, так и нет:

Два вышеуказанных URL возвращают один и тот же результат, и оба работают в MS Word. Структурированные данные могут быть возвращены в формате JSON с помощью ReST API (1,2):

или в тексте с помощьюсогласование контента на основе ссылок, добавив к указанному выше URL-адресу API суффикс "/transform/application/x-bibtex":

или в XML, получив бесплатную учетную запись и используя ее адрес электронной почты в сервисе OpenURL (1,2,3) с параметром «redirect=false» или «noredirect=true»:

https://doi.crossref.org/openurl/?pid= < [email protected] > &id=doi:10.1037/dev0000663&redirect=false

Я все еще хотел бы узнать, есть ли правильное решение, чтобы заставить MS Word и другие программы запрашивать URL без декодирования %-кодов. Я не приму свой собственный ответ здесь, так что я смогу принять хороший ответ, если кто-то его опубликует.

Связанный контент