Rolf B: Speichern einer CSV-Datei (utf-8) nach "text/csv;charset=iso-8859-15"

Beitrag lesen

Hallo UDK,

FALLS es Dir darum geht, die Daten nach Excel zu importieren: Das kann auch CSV-Import mit UTF-8. Dafür brauchst Du das nicht.

Im BLOB-Konstruktor kannst Du einen MIME-Typ angeben, aber der beschreibt nicht das Soll, sondern nennt Information zum Ist, das Du hineingibst.

Was Dir bis vor ein paar Jahren geholfen hätte, wäre die TextEncoder Klasse gewesen. Aber die Arroganz des Web, die alles außer UTF-8 für unbrauchbar erklärt und auf Legacy pfeift, hat die non-UTF8 Unterstützung dieser Klasse eliminiert. Ja, Gunnar, für das Web ist alles andere als UTF-8 unbrauchbar. Es gibt aber noch eine Welt jenseits des Web.

Insofern hilft Dir nur Handarbeit. Überlege, welche Codepoints Du übersetzen können willst, und mach Dir eine Übersetzungstabelle für ISO-8859-15. Im einfachsten Fall ist das ein Array mit 256 Einträgen (aber nicht den Indexen 0-255), und du setzt an die Stelle, die dem UTF-8 Codepoint entspricht, den ISO-8859 Codewert des Zeichens. Dann rennst Du über deine Eingabe und erzeust für jedes UTF-8 Zeichen einen Eintrag in einem UInt8Array, und das steckst Du dann in deinen Blob. Auf diese Weise kannst Du auch Unicodezeichen, die in ISO-8859-15 nicht zu finden sind, auf ähnliche Ersatzzeichen mappen.

Es gibt auch eine Library, die den Job tut, namens ICONV-LITE, aber die ist für node.js gemacht und muss erstmal mit Browserify für den Einsatz im Browser tauglich gemacht werden. Sagt die Doku - ich hab's noch nicht selbst getan. Und sie ist riesig (180KB).

Rolf

--
sumpsi - posui - obstruxi