sorry, da hat sich bei mir noch ein Fehler eingeschlichen.
B4X:
all=Chr(255)
buffer = all.GetBytes("ISO-8859-1")
all=BytesToString(buffer,0,buffer.Length,"ISO-8859-1")
Dim Writer As TextWriter
Writer.Initialize2(File.OpenOutput(File.DirRootExternal,"2.txt" ,False),"ISO-8859-1")
Writer.Write(all)
Writer.Close
File.WriteString(File.DirRootExternal, "1.txt",all)
funktioniert nun soweit. Aber es bleiben noch ein paar Fragen offen:
1. Warum funktioniert das Encoding als TextWriter Objekt fuer ISO-8859-1 korrekt, aber als File.WriteString mit selbigem Encoding nicht?
2. Gibt es irgendeine Moeglichkeit, B4A zu veranlassen, ein String generell als extended ASCII zu kodieren, OHNE den Umweg ein File zu schreiben? Denn, wenn ich das File wieder einlese und den String intern weiterbehandle (NICHT als Stream, sondern als plain STRING), geht mir genau diese extended ASCII Kodierung wieder verloren.
Intern funktioniert Android und natürlich auch Basic4Android mit UTF-8 Encoding.
So viel Ich weiss kannst Du das nicht ändern.
Du brauchst das Encoding nur wenn Du mit externen Dateinen, Programmen oder Geräten kommunizieren willst die dieses Encoding brauchen (zum lesen oder zum schreiben).
In Deinem Beispile mit all=BytesToString(buffer,0,buffer.Length,"ISO-8859-1") das heisst dass der buffer das "ISO-8859-1" Encoding hat und nich der all String !
ok, was natuerlich heisst, dass Librarys mit Befehlen, welche etwas nach "extern verschicken" und ein String als Parameter benutzen, nicht wirklich sinnvoll sind.
Das ist auch der Fall.
Aber wenn zum Beispiel die Daten im Buffer mit ISO-8859-1 encodiert sind und Du gibst aber an dass das Encoding ASCII wäre dann ist die Umwandlung nach UTF-8 falsch weil die verschiedenen Bytes nicht die gleiche Bedeutung haben.