added cactus theme files
This commit is contained in:
@@ -0,0 +1,114 @@
|
||||
---
|
||||
title: JavaScript URI エンコーディング
|
||||
date: 2019-11-10 09:00:00
|
||||
tags:
|
||||
- JavaScript
|
||||
categories:
|
||||
- notes
|
||||
keywords:
|
||||
- Javascript
|
||||
- encodeURIComponent
|
||||
---
|
||||
|
||||
## まとめ
|
||||
|
||||
`encodeURI()`と`encodeURIComponent()`はRFC 2396準拠である。
|
||||
`encodeURI()` は完全な URI を表すのに必要な文字 (Reserved Characters) はエンコードしません。
|
||||
また、予約されていないが "そのまま" URI に使用できる(Unreserved Marks) 文字をエンコードしません。
|
||||
`encodeURIComponent()` は "Unreserved Marks" 文字をエンコードしません。
|
||||
|
||||
```JavaScript
|
||||
var set1 = ";,/?:@&=+$#"; // Reserved Characters
|
||||
var set2 = "-_.!~*'()"; // Unreserved Marks
|
||||
|
||||
console.log(encodeURI(set1)); // ;,/?:@&=+$
|
||||
console.log(encodeURI(set2)); // -_.!~*'()
|
||||
|
||||
console.log(encodeURIComponent(set1)); // %3B%2C%2F%3F%3A%40%26%3D%2B%24
|
||||
console.log(encodeURIComponent(set2)); // -_.!~*'()
|
||||
```
|
||||
|
||||
## rfc2396 appendix-A
|
||||
|
||||
[https://tools.ietf.org/html/rfc2396#appendix-A](https://tools.ietf.org/html/rfc2396#appendix-A)
|
||||
```
|
||||
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
|
||||
absoluteURI = scheme ":" ( hier_part | opaque_part )
|
||||
relativeURI = ( net_path | abs_path | rel_path ) [ "?" query ]
|
||||
|
||||
hier_part = ( net_path | abs_path ) [ "?" query ]
|
||||
opaque_part = uric_no_slash *uric
|
||||
|
||||
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
|
||||
"&" | "=" | "+" | "$" | ","
|
||||
|
||||
net_path = "//" authority [ abs_path ]
|
||||
abs_path = "/" path_segments
|
||||
rel_path = rel_segment [ abs_path ]
|
||||
|
||||
rel_segment = 1*( unreserved | escaped |
|
||||
";" | "@" | "&" | "=" | "+" | "$" | "," )
|
||||
|
||||
scheme = alpha *( alpha | digit | "+" | "-" | "." )
|
||||
|
||||
authority = server | reg_name
|
||||
|
||||
reg_name = 1*( unreserved | escaped | "$" | "," |
|
||||
";" | ":" | "@" | "&" | "=" | "+" )
|
||||
|
||||
server = [ [ userinfo "@" ] hostport ]
|
||||
userinfo = *( unreserved | escaped |
|
||||
";" | ":" | "&" | "=" | "+" | "$" | "," )
|
||||
|
||||
hostport = host [ ":" port ]
|
||||
host = hostname | IPv4address
|
||||
hostname = *( domainlabel "." ) toplabel [ "." ]
|
||||
domainlabel = alphanum | alphanum *( alphanum | "-" ) alphanum
|
||||
toplabel = alpha | alpha *( alphanum | "-" ) alphanum
|
||||
IPv4address = 1*digit "." 1*digit "." 1*digit "." 1*digit
|
||||
port = *digit
|
||||
|
||||
path = [ abs_path | opaque_part ]
|
||||
path_segments = segment *( "/" segment )
|
||||
segment = *pchar *( ";" param )
|
||||
param = *pchar
|
||||
pchar = unreserved | escaped |
|
||||
":" | "@" | "&" | "=" | "+" | "$" | ","
|
||||
|
||||
query = *uric
|
||||
|
||||
fragment = *uric
|
||||
|
||||
uric = reserved | unreserved | escaped
|
||||
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
|
||||
"$" | ","
|
||||
unreserved = alphanum | mark
|
||||
mark = "-" | "_" | "." | "!" | "~" | "*" | "'" |
|
||||
"(" | ")"
|
||||
|
||||
escaped = "%" hex hex
|
||||
hex = digit | "A" | "B" | "C" | "D" | "E" | "F" |
|
||||
"a" | "b" | "c" | "d" | "e" | "f"
|
||||
|
||||
alphanum = alpha | digit
|
||||
alpha = lowalpha | upalpha
|
||||
|
||||
lowalpha = "a" | "b" | "c" | "d" | "e" | "f" | "g" | "h" | "i" |
|
||||
"j" | "k" | "l" | "m" | "n" | "o" | "p" | "q" | "r" |
|
||||
"s" | "t" | "u" | "v" | "w" | "x" | "y" | "z"
|
||||
upalpha = "A" | "B" | "C" | "D" | "E" | "F" | "G" | "H" | "I" |
|
||||
"J" | "K" | "L" | "M" | "N" | "O" | "P" | "Q" | "R" |
|
||||
"S" | "T" | "U" | "V" | "W" | "X" | "Y" | "Z"
|
||||
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" |
|
||||
"8" | "9"
|
||||
```
|
||||
|
||||
## 参考
|
||||
|
||||
[https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent](https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent)
|
||||
|
||||
[https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURI)
|
||||
|
||||
[https://qiita.com/aosho235/items/0581fc82f8ce2c5ac055](https://qiita.com/aosho235/items/0581fc82f8ce2c5ac055)
|
||||
|
||||
[https://tools.ietf.org/html/rfc2396](https://tools.ietf.org/html/rfc2396)
|
||||
Reference in New Issue
Block a user