雛形リテラル (URI雛形)

リテラル (URI Template)

[1] URI雛形リテラル (literals) は、その文字自体を表します。

仕様書

意味

[3] URI雛形以外の文字は、そのまま URI参照に複製されます >>2

[4] ただし URI参照で認められない文字は、 UTF-8符号化されてパーセント符号化されます >>2

構文

[5] RFC 3987 IRI参照に含まれ得る符号位置が含まれるようです。 ただし %パーセント符号化としてのみ使うことができます。 >>2

  1. |
    1. U+0021
    2. U+0023
    3. U+0024
    4. U+0026
    5. U+0028..U+003B
    6. U+003D
    7. U+003F..U+005B
    8. U+005D
    9. U+005F
    10. U+0061..U+007A
    11. U+007E
    12. ucschar
    13. iprivate
    14. パーセント符号化

展開

[7] リテラルは、次のように展開します >>6

  1. [8] RFC 3986 unreserved, RFC 3986 reserved, パーセント符号化のいずれかなら、 そのまま複製します。
  2. [9] それ以外なら、 UTF-8符号化し、 パーセント符号化したものを返します。

[11] これによってパーセント符号化されないのは、 RFC 3986 URI でそのまま使える文字から、 % を除いたものです (>>10)。

[12] % は、元々パーセント符号化の一部として含まれていた時だけ、 そのまま複製されます。パーセント符号化を構成しない %URI雛形の構文上認められておらず、リテラルではないので、 誤りとなります。

展開参照。

[13] RFC 3986 URI参照で使えない文字パーセント符号化されますが、 使える文字パーセント符号化されません。ですから、 URI としては使えても特定の場面では使えない文字が含まれていても、 自動的にパーセント符号化されることは無いということです。

[15] Safari 9.0 ( 版) <https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW27>

The following ECMAScript 6 content is now supported by Safari:

Template Literals