Michael Bischof wrote:
> für die Anfängerveranstaltung sammle ich weiteres Material. Hier nun
> folgendes Problem:
> eine Textdatei beispiel.txt ist unter utf-8 gespeichert. Sie enthält viele
> Sonderzeichen.
>
> Wenn ich in kwrite auf "Datei öffnen" gehe kann ich rechts oben im Fenster
> die encodings leicht auswählen.
>
> Wie würde das unter Windwos zu machen sein? Weiß das Jemand?

Das geht unter Windows genau wie unter Linux. Man nutzt die Fähigkeiten, die 
der verwendete Editor hat. Ist der verwendete Editor zufällig Notepad, kann 
man in der Auswahlbox, die man per "Datei / Öffnen..." bekommt, die Kodierung 
einstellen. Es wird vermutlich auch für Windows Editoren geben, bei denen man 
das Encoding der geladenen Datei - wie in kwrite - nachträglich noch 
umstellen kann.

> - Das 
> Einzige, was mir bekannt ist: automatisch geht es nicht, auch unter Linux
> nicht.

Das verwendete Encoding einer Datei automatisch zu erkennen, ist schwierieg 
bis unmöglich. Man erinnere sich nur an die Diskussionen, die in letzter Zeit 
schon zweimal hier gefürt wurden, bei denen es darum ging, daß "der Browser 
Umlaute falsch darstellt". Auch wenn die Beteiligten in diesen Fällen 
Webbrowser und Webserver waren, ist das grundlegende Problem jedoch das 
selbe: Ein Computer kann nun mal mit Buchstaben (oder allgemeiner: Zeichen) 
nichts anfangen.

Eine "Textdatei" unterscheidet sich nicht prinzipiell von jeder anderen Datei, 
z. B. einer "Programmdatei" oder einer Datei mit "Binärdaten", sondern 
enthält einfach nur eine Folge von Bytes. Sie wird erst dadurch  
zur "Textdatei", daß wir sie an ein Programm verfüttern (z. B. einen Editor), 
welches diese Bytefolge als Folge von Nummern, denen Buchstaben zugeordnet 
sind, interpretiert und entsprechend darstellt. Wie aus der Bytefolge eine 
Nummernfolge erzeugt wird und welcher Nummer letztlich welches Zeichen 
zugeordnet wird, dafür gibt es endlos viele Möglichkeiten - die verschiedenen 
Encodings. Welches Encoding beim Erzeugen der Datei verwendet wurde, kann man 
i. a. der resultierenden Bytefolge nicht ansehen. Man kann normalerweise 
bestenfalls raten.

Ein paar Ausnahmen gibt es dann doch, bspw.:
- Aufgrund der Struktur von UTF-8-Files kannst Du möglicherweise zu dem 
sicheren Schluß kommen: "Das ist kein korrektes UTF-8".
- Eine Datei, die mindestens ein Byte mit einem Wert von >= 128 enthält, kann 
kein US-ASCII sein.
- IIRC erzeugt z. B. Notepad, wenn man beim Speichern UTF-8 oder UTF-16 
auswählt, sogenannte Byte Order Marks (BOM) am Dateianfang, anhand derer man 
beim Einlesen das Encoding wieder feststellen kann.

Gruß
  mks


--
----------------------------------------------------------------------------
PUG - Penguin User Group Wiesbaden - http://www.pug.org

Antwort per Email an