https://web.dev/articles/base64-encoding

絵文字やサロゲートペアを安全に扱えるBase64エンコードについて。 btoa()/atob()はUnicodeを扱うときに問題があるためTextEncoderでエンコードしてから扱う。 TextEncoderは単独のサロゲートを持つ文字列を不正なデータとして � に置き換えてしまうため、isWellFormed()を使い判定する話