/
289.txt
72 lines (56 loc) · 3.12 KB
/
289.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
[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]]
としては使えても特定の場面では使えない[[文字]]が含まれていても、
自動的に[[パーセント符号化]]されることは無いということです。