Hallo pl,
ich hab Dir schon öfter mal das Uint8Array als geeigneten Datentyp empfohlen. Es gibt im File API keinen FileWriter mit einer Methode writeFromBinaryString.
utf8euro = Uint8Array.from([0xe2, 0x82, 0xac ]);
euro = new TextDecoder().decode(utf8euro);
Du kannst für einen Roundtrip String -> „Binary String“ -> String aber auch einen kleinen Helper bauen (den Kompatibilitätscheck überlasse ich Dir) und das Ganze damit relativ kompakt darstellen:
// Helper zum Iterieren über die CharCodes eines String
function* iterateCharCodes(s) {
for (let c of s) yield c.charCodeAt(0);
}
let hello = "Hällo Wörld für 217€";
let hBlob = new Blob([hello]);
let fr = new FileReader();
fr.onload = function() {
console.log("„Binary String“: " + fr.result);
let ui = Uint8Array.from(iterateCharCodes(fr.result));
console.log("Reconstructed String: " + (new TextDecoder().decode(ui)));
};
fr.readAsBinaryString(hBlob);
Der TextDecoder will dummerweise etwas Bufferoides haben und nimmt den Iterator nicht direkt an.
Mit iterateCharCodes kannst Du einen beliebigen String („binary string“ oder jeder sonst) in seine Zeichen zerlegen und einen Iterator über die Unicode Codepoints bekommen. Den Iterator kannst Du mit for...of konsumieren oder an Factorymethoden wie Uint8Array.from übergeben.
Rolf
--
sumpsi - posui - clusi
sumpsi - posui - clusi