URL 内の URL エンコードされたスラッシュがブラウザ以外のリンクで失敗する

URL 内の URL エンコードされたスラッシュがブラウザ以外のリンクで失敗する

ウェブサイト出典:出版物の DOI コードを検索し、出版物に関するデータを返します。DOI コードにはスラッシュが含まれます。例:

10.1037/dev0000663

その出版物のデータを取得するには、次の 2 つの方法があります。

2番目の方法では、DOIのスラッシュをURLエンコードする必要があります%2f。エンコードされていないURLは機能しません。したがって、https://doi2bib.org/bib/10.1037/dev0000663動作しません。

さて、ここで問題です。有効なURLをコピーすると

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

MS Word または Excel にリンクすると、そこからはリンクが機能せず、次のエラー メッセージが表示されます。

ここに画像の説明を入力してください

エラー メッセージに URL が正しく表示されていることに注意してください。Word で URL の上にマウスを移動したときに表示される内容に、問題の原因が隠されている可能性があります。

ここに画像の説明を入力してください

ここで、URL がデコードされて%2Fスラッシュに変更されていることに注意してください。これが Word が実際にアクセスしようとしている URL である場合、失敗する理由が説明できます。

%2F正しい URL が送信されるかどうかを確認するためにに変換してみましたが%252F、送信されませんでした。次のエラー メッセージが表示されます。

ここに画像の説明を入力してください

URL にマウスを合わせると、Word が%252Fスラッシュに変換し、間違った URL に再度アクセスしようとしたことがわかります。

ここに画像の説明を入力してください

Word と Excel の他に、Adobe Acrobat の「Web ページから PDF を作成」コマンドでもリンクは機能しません。したがって、この問題は MS Office プログラムに固有のものではありません。

この URL を Word や他のプログラムが正しく実行できるように記述するにはどうすればよいでしょうか?

答え1

回避策: DOI2bibの代わりに、CrossRefのメタデータ配信を使用します(ドキュメント:12)。書誌データは、基本的なメタデータ検索は、DOI を URL エンコードしてもしなくてもかまいません。

上記の2つのURLは同じ結果を返し、どちらもMS Wordで動作します。構造化データはReST APIを使用してJSON形式で返すことができます(12):

またはテキストでリンクベースのコンテンツネゴシエーション上記の API URL の末尾に「/transform/application/x-bibtex」を追加します。

または、無料アカウントを取得してOpenURLサービスで電子メールアドレスを使用することでXML形式でも送信できます(123) パラメータ設定が "redirect=false" または "noredirect=true" の場合:

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

MS Word やその他のプログラムで、% コードをデコードせずに URL を要求できるようにする適切な解決策があるかどうか、まだ知りたいです。ここでは自分の回答は受け付けません。誰かが良い回答を投稿してくれたら、それを受け入れられるようにするためです。

関連情報