[1] [[URI雛形]]の[DFN[[RUBYB[[[リテラル]]]@en[literals]]]]は、その文字自体を表します。

* 仕様書

[REFS[
- [2] [CITE@en[RFC 6570 - URI Template]] ([TIME[2014-10-27 23:08:55 +09:00]] 版) <http://tools.ietf.org/html/rfc6570#section-2.1>
- [6] [CITE@en[RFC 6570 - URI Template]] ([TIME[2014-10-27 23:08:55 +09:00]] 版) <http://tools.ietf.org/html/rfc6570#section-3.1>
]REFS]

* 意味

[3] [[URI雛形]]の[[式]]以外の[[文字]]は、そのまま [[URI参照]]に複製されます [SRC[>>2]]。

[4] ただし [[URI参照]]で認められない[[文字]]は、 [[UTF-8]] で[[符号化]]されて[[パーセント符号化]]されます
[SRC[>>2]]。

* 構文

[5] [[RFC 3987]] [[IRI参照]]に含まれ得る[[符号位置]]が含まれるようです。
ただし [CODE(char)[[[%]]]] は[[パーセント符号化]]としてのみ使うことができます。 [SRC[>>2]]

[FIG(railroad)[
= |
== [CODE(char)[[[U+0021]]]]
== [CODE(char)[[[U+0023]]]]
== [CODE(char)[[[U+0024]]]]
== [CODE(char)[[[U+0026]]]]
== [CODE(char)[[[U+0028]]]]..[CODE(char)[[[U+003B]]]]
== [CODE(char)[[[U+003D]]]]
== [CODE(char)[[[U+003F]]]]..[CODE(char)[[[U+005B]]]]
== [CODE(char)[[[U+005D]]]]
== [CODE(char)[[[U+005F]]]]
== [CODE(char)[[[U+0061]]]]..[CODE(char)[[[U+007A]]]]
== [CODE(char)[[[U+007E]]]]
== [CODE(ABNF)@en[[[ucschar]]]]
== [CODE(ABNF)@en[[[iprivate]]]]
== [[パーセント符号化]]
]FIG]

[REFS[
- [14] [CITE@en[Character set "$rfc6570:literals-char"]] ([TIME[2015-01-17 22:22:51 +09:00]] 版) <http://chars.suikawiki.org/set?expr=%24rfc6570:literals-char>
]REFS]

* 展開

[7] [[リテラル]]は、次のように[[展開]]します [SRC[>>6]]。
[FIG(steps)[
= [8] [[RFC 3986]] [CODE(ABNF)@en[[[unreserved]]]], [[RFC 3986]]
[CODE(ABNF)@en[[[reserved]]]], [[パーセント符号化]]のいずれかなら、
そのまま複製します。
= [9] それ以外なら、 [[UTF-8]] で[[符号化]]し、
[[パーセント符号化]]したものを返します。
]FIG]

[11] これによって[[パーセント符号化]]されないのは、 [[RFC 3986]] [[URI]]
でそのまま使える[[文字]]から、 [CODE[[[%]]]] を除いたものです (>>10)。

[REFS[
- [10] [CITE@en[Character set "$rfc3986:unreserved | $rfc3986:reserved"]] ([TIME[2015-01-17 22:15:46 +09:00]] 版) <http://chars.suikawiki.org/set?expr=%24rfc3986%3Aunreserved+%7C+%24rfc3986%3Areserved>
]REFS]

[12] [CODE[[[%]]]] は、元々[[パーセント符号化]]の一部として含まれていた時だけ、
そのまま複製されます。[[パーセント符号化]]を構成しない [CODE[[[%]]]]
は [[URI雛形]]の構文上認められておらず、[[リテラル]]ではないので、
誤りとなります。

;; [[展開]]参照。

[13] [[RFC 3986]] [[URI参照]]で使えない[[文字]]は[[パーセント符号化]]されますが、
使える[[文字]]は[[パーセント符号化]]されません。ですから、 [[URI]]
としては使えても特定の場面では使えない[[文字]]が含まれていても、
自動的に[[パーセント符号化]]されることは無いということです。

[FIG(quote)[
[FIGCAPTION[
[15] [CITE@en[Safari 9.0]]
([TIME[2015-11-04 23:31:57 +09:00]] 版)
<https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_9.html#//apple_ref/doc/uid/TP40014305-CH9-SW27>
]FIGCAPTION]

> The following ECMAScript 6 content is now supported by Safari:
> Template Literals

]FIG]
