10.2 DOI名のエンコーディング
このセクションでは、DOI名のエンコーディングに関する様々な情報を紹介します。
10.2.1 ASCII以外の文字のUTF-8エンコーディング
UTF-8は文字を1~6オクテットでエンコードするUnicodeエンコーディングです。UTF-8エンコーディングは非ASCII文字が使用されるときに役割を果たします。例えば、「nihongo」という日本語は次のように表記されます。
「nihongo」の漢字を表すUnicodeシーケンスは、「65e5 672c 8a9e」です。この列はUTF-8で「E6 97 A5 E6 9C AC E8 AA 9E」とエンコーディングできます。
UTF-8の詳細についてはRFC3629を参照してください。
10.2.2 URLで使用する際のDOI名のエンコーディング
DOI名にURLアプリケーションの文脈で、使用が許可されていない文字や別の意味を持つ文字が含まれている場合、DOI名をUniform Resource Locator(URL)として表示する際には、16進数エンコードを使用する必要があります。16進エンコードは指定された文字をパーセントで始まる16進値で置き換えることです。
例えば、#は%23になり、
https://doi.org/10.1000/456#789 は
https://doi.org/10.1000/456%23789 とエンコードされます。(このため、ブラウザは、通常はURLの終点とフラグメントの始点として扱う素の#に遭遇しなくなり、#で止まる代わりに、文字列全体をDOIサーバーネットワークへ送信して解決します。)
表5は、16進数エンコーディングの必須ルールと推奨ルールを示します(推奨ルールは、現行のウェブブラウザの実際の経験に基づいて定められたものです)。
| 文字 | エンコーディング |
|---|---|
| 必須ルール | |
| % | %25 |
| " | %22 |
| # | %23 |
| SPACE | %20 |
| ? | %3F |
| 推奨ルール | |
| < | %3C |
| > | %3E |
| { | %7B |
| } | %7D |
| ^ | %5E |
| [ | %5B |
| ] | %5D |
| ` | %60 |
| | | %7C |
| \ | %5C |
| + | %2B |
| ,(Which RA サービスリクエストの文脈でのみ必要) | %2C |
注:ウェブブラウザによる「/./」と「/../」の取り扱いにはばらつきが生じることがあります。スラッシュの一方はパーセントエンコーディングすることが推奨されます。例えば、「/./」は「/.%2F」、「/../」は「/..%2F」に変更します。
注:URNですでに標準化されているワークフローの中でDOI名を使用できるようにするため、DOIプロキシサーバーはDOI名の最初のスラッシュの代わりにコロンを使用することを理解します。例えば、DOI名「10.123/456」をhttps://doi.org/urn:doi:10.123:456の形式で記述することで、doi.orgドメイン内でURNとしてDOI名を表現できます。ただし、DOIサフィックスには別のスラッシュを含めることもでき、別のスラッシュが含まれる場合は、コロンに置き換えるのではなく、16進エンコードする必要があります。例えば、DOI名「10.123/456ABC/zyz」で最後のスラッシュ文字を「%2F」にエンコーディングするとhttps://doi.org/urn:doi:10.123:456ABC%2Fzyzになります。