Hallo Candid.
Immerhin kannst du ja immer in paar Zeichensätze ausschließen, wenn zum Beispiel die Bitlänge des Strings nicht durch 8 teilbar ist, weißt du, dass es sich nicht um ein 8-bit-Charset handeln kann.
<dummfrag>
Die Ausgabe von strlen entspricht nicht der Bitlänge?
</dummfrag>
Oder du kannst überprüfen, ob es sich um UTF-8 handeln kann.
Das versuche ich ja die ganze Zeit. ;-)
UTF-8 kann zum Beispiel keine Zeichen der Binärcodes 11111000–11111111 enthalten. Dann kannst du noch schauen, ob ein 110xxxxx wirklich von einem 10xxxxxx gefolgt wird, oder ob ein 10xxxxxx vorkommt, dessen Vorgänger eben einer ist, der in UTF-8 nicht erlaubt wäre.
Soweit habe ich das auch schon auf der Wikipedia-Seite herauslesen können.
Aber wie _genau_ kann ich dies überprüfen?
Anders gefragt: wie wandele ich einen String in seine Binärform um?
Es gibt also schon einige Merkmale, anhand derer man bestimmte Zeichensätze ausschließen kann. Die genaue Bestimmung zum Beispiel unterhalb der ISO-8859-Zeichensätze ist aber in der Tat sehr schwierig bis unmöglich.
Das brauche ich gar nicht. Ich möchte nur wissen, ob die Datei UTF-8-kodiert ist (-> entsprechende Funktionen zum Öffnen und Speichern werden aktiviert), andernfalls wird die Datei regulär geöffnet und gespeichert.
Einen schönen Sonntag noch.
Gruß, Ashura
Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
30 Days to becoming an Opera8 Lover -- Day 21: Toolbars
Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
[Deshalb frei! - Argumente pro freie Software]