ich habe mich noch nie mit Text Encoding (UTF-8, UTF… usw.) auseinander gesetzt. Nun versuche ich über einen TextInputStream zeilenweise eine Textdatei einzulesen.
Soweit ich das beurteilen kann, ist die Textdatei UTF-8 kodiert.
Kopiere ich dann eine Zeichenkette (die mit readline eingelesen wurde) wie z.B.
L\xC3\xB6schen
in ein Textfeld, wird die Zeichenkette dort auch als L\xC3\xB6schen angezeigt und nicht als Löschen.
Wo liegt mein Fehler? Habe schon viel mit Encodings herumgespielt, das Ergebnis ist immer das selbe…
Da wären ein paar mehr Angaben ganz hilfreich, z.B. einmal die Textdatei (um zu schauen, welche Kodierung die tatsächlich hat) und natürlich der Code, der zum Einlesen verwendet wird…
Ich gebe bei dem InputStream das Encoding an. Anbei mal ein schnell konstruiertes Beispiel, ist alles im Opening Event drin, einfach die beigefügte test.txt auswählen…
Wahrscheinlich ist es so banal, dass ich jetzt schon rot anlaufe
Hier noch zusätzlich der Code:
Var f As FolderItem
Var textInput As TextInputStream
Var rowFromFile As String
Var a As String
f = FolderItem.ShowOpenFileDialog("text/plain") // defined as a FileType
If f <> Nil Then
textInput = TextInputStream.Open(f)
textInput.Encoding = Encodings.UTF8
While Not textInput.EndOfFile
a = textInput.ReadLine
TextArea1.AddText(a + EndOfLine)
Wend
End If
Ah ja, speichert man das Projekt in Xojo als Text für Versions kontrolle ab, wird dort die gleiche Kodierung bei Umlauten verwendet.
Und in C:
So the sequence in your example of '\xeb\x2a' is an implementation defined value. It’s likely to be the int value 0xeb2a or 0x2aeb depending on whether the target platform is big-endian or little-endian, but you’d have to look at your compiler’s documentation to know for certain.