Hallo dedlfix,
das sagen viele, aber die Funktion ist nicht kaputt, sondern funktioniert nach Vorgabe.
Meines Wissens ist base64-Codierung definiert als "Verteile 3 Bytes auf 4". Es ist also korrekt, dass btoa keine Unicodezeichen jenseits von \u00ff annimmt. Dafür muss man den Unicode-String erstmal UTF-8 codieren, dann hat man eine Bytesequenz und btoa ist wieder anwendbar.
Das Blöde an der Sache ist, dass JavaScript nur einen sehr umständlichen Weg bietet, um an die UTF-8 Codierung einer Ressource heranzukommen. Über Blob und FileReader ist es noch am einfachsten, mit dem Nachteil des „binary string“, der zu 50% aus Totbytes besteht. Eine native Implementierung, die einen ArrayBuffer base64 codiert, scheint zu fehlen. Oder ich bin zu blöd es zu finden :)
PLs Anliegen, eine binäre Ressource serialisiert im LocalStorage abzulegen, ist also nicht so ganz trivial. Vielleicht ist das Absicht, und der LocalStorage ist dafür nicht vorgesehen.
Rolf
sumpsi - posui - clusi