[1] [CODE(DOMi)@en[Window]] [[インターフェイス]]の
[DFN[[CODE[atob]]]] と [DFN[[CODE[btoa]]]] は、
[[Base64]] 変換を行います。


* 仕様書

[REFS[
- [857] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <https://www.whatwg.org/specs/web-apps/current-work/#atob>
- [860] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2014-04-03 03:44:44 +09:00]] 版) <https://www.whatwg.org/specs/web-apps/current-work/#apis-available-to-workers>
]REFS]

* API

[858] [DFN[[CODE(JS)@en[[[btoa()]]]]]] と [DFN[[CODE(JS)@en[[[atob()]]]]]] は、 [[Base64]]
の[[符号化]]と[[復号]]を行う[[関数]]です。

[859] [DFN[[CODE(DOMi)@en[[[WindowBase64]]]]]] [[インターフェイス]]の[[メソッド]] [DFN[[CODE(DOMm)@en[[[btoa]]]]]]
と [DFN[[CODE(DOMm)@en[[[atob]]]]]] は、いずれも [CODE(DOMi)@en[[[DOMString]]]] を[[引数]]とし、
[CODE(DOMi)@en[[[DOMString]]]] を返します [SRC[>>857]]。 [CODE(DOMi)@en[[[WindowBase64]]]]
[[インターフェイス]]は、 [CODE(IDL)@en[[[NoInterfaceObject]]]] であり、
[CODE(DOMi)@en[[[Window]]]] [SRC[>>857]] と [CODE(DOMi)@en[[[WorkerGlobalScope]]]] [SRC[>>860]]
に[[実装]]されています。

[861] [CODE(DOMm)@en[[[btoa]]]] は、次のようにしなければ[MUST[なりません]] [SRC[>>857]]。

[FIG(steps)[
= [114] [VAR[データ]]を、第1引数を [CODE[DOMString]] と解釈した結果に設定します。
= [115] [VAR[データ]]に [CODE[U+0100]] [[以上]]の[[符号位置]]が含まれる場合、
== [116] [CODE[InvalidCharacterError]] [CODE[DOMException]] を[[投げ]]ます。
= [117] それ以外の場合、
== [118] [VAR[データ]]に [[isomorphic encode]] を適用した結果に 
[[forgiving-base64 encode]] を適用した結果を返します。
]FIG]

[862] [CODE(DOMm)@en[[[atob]]]] は、次のようにしなければ[MUST[なりません]] [SRC[>>857]]。

[FIG(steps)[
= [119] [VAR[データ]]を、第1引数を [CODE[DOMString]] と解釈した結果に設定します。
= [112] [VAR[結果]]を、[VAR[データ]]に [[forgibing-base64 decode]] を適用した結果に設定します。
= [866] 結果が[[失敗]]の場合、
== [113] [CODE(DOMc)@en[[[InvalidCharacterError]]]] [CODE[DOMException]] を[[投げ]]ます。
= [122] それ以外の場合、
== [867] [VAR[データ]]に [[isomorphic decode]] を適用した結果を返します。
]FIG]

* 歴史

[2] [[Base64]] 参照。