Vitus hat gesagt.:Meines Erachtens sollte folgende Lösung möglich sein:
Zum prüfen, ob ein String einem Encoding entspricht könnte geprüft werden, in dem man den String encoded und schaut, ob das Ergebnis wieder dem String entspricht. Ansonsten muss in dem String ein Zeichen gewesen sein, welches encoded werden musste.
Liege ich hier falsch?
Leroy42 hat gesagt.:Kurz und schmerzvoll: Es kann nicht gehen!![]()
Jedes Encoding nutzt sämtliche möglichen Bytewerte.
Wenn z.b. der Bytewert 242 in einem Encoding ein 'ä' ist und
in einem anderen ein '€' und du in deinem Beispielstring diesen
Bytewert vorfindest, ohne zu wissen, welches Zeichen
an dieser Postion im String sein soll, ist es rein logisch
nicht möglich den String einem Encoding zuzuordnen, da beide
Repräsentationen möglich sind.
Nur wenn du den String zusätzlich in einem dir bekannten
Zeichensatz vorliegen hast (z.B. Unicode, UTF-8) ist es
machbar, über die Bytewerte, das Vorliegen eines bestimmten
Encodings nicht auszuschließen. Es kann dann aber immer
noch sein daß mehrere Encodings möglich sind. Z.B. dürften
sämtliche Encodings den String 'abcde' auf dieselbe Bytefolge abbilden.
Naja, erraten ist ja nicht das, was gefordert wurde...moormaster hat gesagt.:Und dennoch ist es möglich, das Encoding zu erraten.
moormaster hat gesagt.:ob meine .java Dateien das Unix Format benutzen oder ein anderes. Das versucht er wahrscheinlich an den Zeilenumbrüchen zu erkennen.
Leroy42 hat gesagt.:Die Bytefolge für Zeichenumbruch ist BS-spezifisch und hat nichts mit den Encodings zu tun.
moormaster hat gesagt.:NöAber ob ich mit UTF 8, Ansi, ... gespeichtert hab, kann er trotzdem zumindest erraten
![]()
Roar hat gesagt.:das einzige was du machen kannst, ist, soweit ich weiß, die ersten beiden bytes der datei zu überprüfen. wenn die datei mit utf-16 encodiert ist, lauten die nämlich FE FF. *schulternZuck*
moormaster hat gesagt.:Wenn dann gewisse (evtl. eher unübliche) Zeichen vorkommen...
byto hat gesagt.:Das würde ich so nicht unterschreiben. Wie gesagt, es steht kein ß in der Datei sondern ein Code, also eine Zahl. Erst die Interpretation dieser Zahl (je nach Kodierung) ergibt dann das das Zeichen. Die Codes sind halt nicht zwischen den verschiedenen Kodierungen disjunkt. Wenn in Kodierung A das ß den Code 17 hat, dann kann die 17 in Kodierung B vielleicht ein ganz anderes Zeichen sein.
In der Praxis gleichen sich sogar viele Encodings bis zu einem gewissen Grad. Zum Beispiel ISO-8859-1 vs Unicode (UTF-8). Einfach mal im Browser auf UTF-8 umstellen. Das meiste kann man immer noch lesen, ausser die deutschen Sonderzeichen.
Vitus hat gesagt.:ob dieser nur ISO-8599-1 Zeichen enthält.
Vitus hat gesagt.:Mein Gedanke ist, diesen in ISO-8859-1 umzuwandeln. Wenn ich jetzt wieder der gleiche String erhalte, sollte der ursprüngliche ISO-8859-1 entsprechen.
Liege ich hier falsch?