Uint8Array.fromBase64()
Baseline
2025
Newly available
Since September 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Uint8Array.fromBase64() ã¯éçã¡ã½ããã§ãæ°ãã Uint8Array ãªãã¸ã§ã¯ãã base64 ã§ã¨ã³ã³ã¼ããããæååãã使ãã¾ãã
ãã®ã¡ã½ããã¯ã Window.atob() ãããæ¨å¥¨ããã¾ããããã¯ããã³ã¼ããããã¤ããªã¼ãã¼ã¿ãå®éã« ASCII ããã¹ãã§ãããã¨ãæå³ãã¦ããªãéããæååãããæ±ãããããã¤ãé
åã«ãªãããã§ãããã§ã«å²ãå½ã¦ãããé
åãããã¡ã¼ããããããã«ãã¼ã¿ãæ ¼ç´ãããå ´åã¯ã代ããã«ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã Uint8Array.prototype.setFromBase64() ã使ç¨ãã¦ãã ããã
æ§æ
Uint8Array.fromBase64(string)
Uint8Array.fromBase64(string, options)
弿°
string-
base64 æååã§ã
Uint8Arrayã«å¤æãããã¤ãåãã¨ã³ã³ã¼ããããã®ã§ããæååã«ã¯ãAï½Zãaï½zã0ï½9ãããã³ 2 ã¤ã®ç¹æ®æåï¼optionsã§alphabet: "base64"ã使ç¨ãã¦ããå ´åã¯+ããã³/ãoptionsã§alphabet: "base64url"ã使ç¨ãã¦ããå ´åã¯-ããã³_ï¼ãå«ã base64 æåéåã®ã¿ãå«ã¾ãã¦ããå¿ è¦ãããã¾ããæ«å°¾ã«ããã£ã³ã°æå=ãå«ããã¨ãã§ãã¾ããæååå ã® ASCII ãã¯ã¤ãã¹ãã¼ã¹æåã¯ç¡è¦ããã¾ãã optionsçç¥å¯-
base64 æååã®è§£éããã»ã¹ãã«ã¹ã¿ãã¤ãºãããªãã¸ã§ã¯ãã§ããæ¬¡ã®ããããã£ãå«ã¾ãã¦ãã¾ãã
alphabetçç¥å¯-
使ç¨ãã base64 ã¢ã«ãã¡ããããæå®ããæååãæ¬¡ã®ããããã«ãªãã¾ãã
"base64"(default)-
+ããã³/ã使ç¨ããæ¨æºã® base64 æåéåã§ã¨ã³ã³ã¼ããããå ¥åãåãå ¥ãã¾ãã "base64url"-
URL ã«å®å ¨ãª base64 æåéåï¼
-ããã³_ã使ç¨ï¼ã§ã¨ã³ã³ã¼ããããå ¥åãåãå ¥ãã¾ãã
lastChunkHandlingçç¥å¯-
base64 æååã®æå¾ã®å¡ãå¦çããæ¹æ³ãæå®ããæååãbase64 ã§ã¯ 4 æåãã¨ã« 3 ãã¤ããã¨ã³ã³ã¼ãããããããæåå㯠4 æåã®å¡ã«åå²ããã¾ããæå¾ã®å¡ã 4 æåæªæºã®å ´åã¯ãå¥ã®æ¹æ³ã§å¦çããå¿ è¦ãããã¾ããæ¬¡ã®ãããããæå®ã§ãã¾ãã
"loose"(default)-
æå¾ã®å¡ã¯ã2 ã¾ã㯠3 æåã® base64 æåãã¾ãã¯
=æåã§ããã£ã³ã°ãããæ£ç¢ºã« 4 æåã®é·ãã§ããå¿ è¦ãããã¾ããæå¾ã®å¡ã¯ãã³ã¼ããããçµæã«è¿½å ããã¾ãã "strict"-
æå¾ã®å¡ã¯ã
=æåã§ããã£ã³ã°ãããæ£ç¢ºã« 4 æåã®é·ãã§ãªããã°ãªãã¾ãããããã«ããªã¼ãã¼ããã¼ããã ï¼ãã¼ã¿ã表ããªãæå¾ã® base64 æåã®æ«å°¾ã®ãããï¼ã¯ 0 ã§ãªããã°ãªãã¾ãããæå¾ã®å¡ã¯ãã³ã¼ããããçµæã«è¿½å ããã¾ãã "stop-before-partial"-
æå¾ã®å¡ãã
=æåã§ããã£ã³ã°ããã 4 æåã®é·ãã®å ´åããã³ã¼ãããã¦çµæã«è¿½å ããã¾ãããã以å¤ã®å ´åãæå¾ã®æçã¯ç¡è¦ããã¾ãï¼ãã ãã=ã«ç¶ã 1 æåã® base64 æåãå«ã¾ãã¦ããå ´åã¯ãæ§æã¨ã©ã¼ãçºçãã¾ãï¼ãããã¯ãæååãã¹ããªã¼ã ããæ±ºã¾ããæå¾ã®å¡ãã¾ã å®å ¨ã§ã¯ãªãå ´åã«ä¾¿å©ã§ããå ¥åã®ä½æåãèªã¿è¾¼ã¾ããããç¥ãã«ã¯ã代ããã«Uint8Array.prototype.setFromBase64()ã使ç¨ãã¦ãã ãã (ãªã³ã¯å ã®ãã¼ã¸ã«ã¯ã"stop-before-partial"ã使ç¨ããã¹ããªã¼ã ã®ãã³ã¼ãã®ä¾ãå«ã¾ãã¦ãã¾ã)ã
è¿å¤
base64 ã¨ã³ã³ã¼ããããæååãããã³ã¼ãããããã¤ããå«ã¾ãã¦ããæ°ãã Uint8Array ãªãã¸ã§ã¯ãã
ä¾å¤
SyntaxError-
å ¥åæååã«æå®ããã¢ã«ãã¡ããã以å¤ã®æåãå«ã¾ãã¦ããå ´åãã¾ãã¯æå¾ã®å¡ã
lastChunkHandlingãªãã·ã§ã³ã®æ¡ä»¶ãæºããã¦ããªãå ´åã«çºçãã¾ãã TypeError-
次ã®ããããã®å ´åã«çºçãã¾ãã
- å ¥åæååãæååã§ã¯ãªãå ´åã
optionsãªãã¸ã§ã¯ãããªãã¸ã§ã¯ãã¾ãã¯undefinedã§ã¯ãªãå ´åã- ãªãã·ã§ã³ãæå¾
ãããå¤ã¾ãã¯
undefinedã§ã¯ãªãå ´åã
ä¾
>base64 æååã®ãã³ã¼ã
ãã®ä¾ã§ã¯ãæ¢å®ã® alphabet ããã³ lastChunkHandling ãªãã·ã§ã³ã使ç¨ãã¦ãbase64 æååããã³ã¼ããã¦ãã¾ããæ¬¡ã®ç¹ã«æ³¨æãã¦ãã ããã
- 空éå ã®ç©ºç½ã¯ç¡è¦ããã¾ãã
- æåå㯠4 ã®åæ°ã§ã¯ãªãã14 åã® base64 æåã§æ§æããã¦ãã¾ããããã¯ã
lastChunkHandling: "loose"ã§æå®ããå ´åã«ã®ã¿æå¹ã§ããããã³ã¼ãå¯è½ã§ãã - æå¾ã®å¡
Phã¯ãbase64 ã§0b100001ã§ããæåhã§çµãã£ã¦ãããããæå¾ã®0001ãããã¯ããªã¼ãã¼ããã¼ããããã§ãããç¡è¦ããã¾ããããã¯ãlastChunkHandling: "loose"ã«å¯¾å¿ãã¦ããå ´åã«ã®ã¿æå¹ã§ããã³ã¼ãå¯è½ã§ãã
const uint8Array = Uint8Array.fromBase64("PGI+ TURO PC9i Ph");
console.log(uint8Array); // Uint8Array(10) [60, 98, 62, 77, 68, 78, 60, 47, 98, 62]
URL ã»ã¼ã base64 æååã®ãã³ã¼ã
ãã®ä¾ã§ã¯ã alphabet ãªãã·ã§ã³ã使ç¨ãã¦ãURL å¯¾å¿ base64 æååããã³ã¼ããã¦ãã¾ãã
const uint8Array = Uint8Array.fromBase64("PGI-TUROPC9iPg", {
alphabet: "base64url",
});
console.log(uint8Array); // Uint8Array(10) [60, 98, 62, 77, 68, 78, 60, 47, 98, 62]
æå¾ã®å¡ãå³å¯ã«å¦çãã base64 æååã®ãã³ã¼ã
ãã®ä¾ã§ã¯ãlastChunkHandling ãªãã·ã§ã³ã使ç¨ã㦠base64 æååããã³ã¼ããã¦ãã¾ãããã®æååã§ã¯ãæå¾ã®å¡ã¯ã= æåã§ããã£ã³ã°ããã 4 æåã®é·ãã§ãªããã°ãªããããªã¼ãã¼ããã¼ããã㯠0 ã§ãªããã°ãªãã¾ããã
const array1 = Uint8Array.fromBase64("PGI+ TURO PC9i Pg==", {
lastChunkHandling: "strict",
});
console.log(array1); // Uint8Array(10) [60, 98, 62, 77, 68, 78, 60, 47, 98, 62]
const array2 = Uint8Array.fromBase64("PGI+ TURO PC9i Ph==", {
lastChunkHandling: "strict",
});
// Throws a SyntaxError because h is 0b100001, where the last 4 bits are not 0
const array3 = Uint8Array.fromBase64("PGI+ TURO PC9i Pg", {
lastChunkHandling: "strict",
});
// Throws a SyntaxError because the last chunk is not exactly 4 characters long
æå¾ã®å¡ã®ä¸é¨ãå¦çãã base64 æååã®ãã³ã¼ã
ãã®ä¾ã§ã¯ãlastChunkHandling ãªãã·ã§ã³ã使ç¨ãã¦ãæå¾ã®é¨åçãªãã£ã³ã¯ãç¡è¦ã㦠base64 æååããã³ã¼ããã¦ãã¾ãã
// æå¾ã®å¡ãå®å
¨
const array1 = Uint8Array.fromBase64("PGI+ TURO PC9i", {
lastChunkHandling: "stop-before-partial",
});
console.log(array1); // Uint8Array(9) [60, 98, 62, 77, 68, 78, 60, 47, 98]
// æå¾ã®å¡ãããã£ã³ã°ã¤ãã§å®å
¨
const array2 = Uint8Array.fromBase64("PGI+ TURO PC9i Pg==", {
lastChunkHandling: "stop-before-partial",
});
console.log(array2); // Uint8Array(10) [60, 98, 62, 77, 68, 78, 60, 47, 98, 62]
// æå¾ã®å¡ã¯é¨åçãªãã®ã§ãç¡è¦ããã
const array3 = Uint8Array.fromBase64("PGI+ TURO PC9i Pg", {
lastChunkHandling: "stop-before-partial",
});
console.log(array3); // Uint8Array(9) [60, 98, 62, 77, 68, 78, 60, 47, 98]
// æå¾ã®å¡ã¯é¨åçãªãã®ã§ãããã£ã³ã°ãå«ã¾ãã¦ããããããç¡è¦ãããã
const array4 = Uint8Array.fromBase64("PGI+ TURO PC9i Pg=", {
lastChunkHandling: "stop-before-partial",
});
console.log(array4); // Uint8Array(9) [60, 98, 62, 77, 68, 78, 60, 47, 98]
// æå¾ã®å¡ã¯é¨åçã ãã1 ã¤ã® base64 æåã¨ããã«ç¶ã `=` ãå«ã¾ãã¦ãã
const array5 = Uint8Array.fromBase64("PGI+ TURO PC9i P=", {
lastChunkHandling: "stop-before-partial",
});
// ããã¯æå¹ãª base64 æååã®ä¸é¨ã¨ã¯ãªããªããããSyntaxError ãçºçãã
仿§æ¸
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-uint8array.frombase64> |