Hallo Liste, sagt mal, gibt es eine Möglichkeit, einer Datei anzusehen, wie sie kodiert ist? Ich solte utf8 von iso8859-15 unterscheiden können. Dass ich mal Dateien mit der ein oder anderen Kodierung bearbeite (und quanta dann prompt mit dem falschen Zeichensatz arbeitet) hat mir jetzt doch schon einige Male HTML-Seiten kaputt gemacht. Helga -- ## OpenSource-Werkstatt in Reutlingen -- http://www.eschkitai.de/ ## Etikette - Nein Danke? -- http://www.suse-etikette.de.vu/ ## Wer hilft? -- http://hsqldb.sourceforge.net/web/openoffice.html ## Vote for: http://bugs.kde.org/show_bug.cgi?id=77109
Am Sonntag, 21. August 2005 17:56 schrieb Helga Fischer:
sagt mal, gibt es eine Möglichkeit, einer Datei anzusehen, wie sie kodiert ist? Ich solte utf8 von iso8859-15 unterscheiden können. (...).
Vielleicht hilft dir das: http://www.cl.cam.ac.uk/~mgk25/unicode.html#perl Nimm die Zeile nach "Locate malformed UTF-8 sequences:" und schreib die zu testenden Dateinamen dahinter. Wenn eine Datei nicht UTF-8 ist, bekommst du Fehlermeldungen unter Angabe des Dateinamens. Gruß, Jan -- Lead, follow, or get out of the way.
Hallo Helga,
Helga Fischer
Hallo Liste,
sagt mal, gibt es eine Möglichkeit, einer Datei anzusehen, wie sie kodiert ist? Ich solte utf8 von iso8859-15 unterscheiden können.
Dass ich mal Dateien mit der ein oder anderen Kodierung bearbeite (und quanta dann prompt mit dem falschen Zeichensatz arbeitet) hat mir jetzt doch schon einige Male HTML-Seiten kaputt gemacht.
.. doch das Gute liegt so nah... file(1) sollte dir alles sagen. -Dieter -- Dieter Klünter | Systemberatung http://www.dkluenter.de GPG Key ID:8EF7B6C6
Am Sonntag, 21. August 2005 19:46 schrieb Dieter Kluenter:
(...). .. doch das Gute liegt so nah... file(1) sollte dir alles sagen.
Dachte ich zuerst auch, aber irgendwie finde ich nicht die Option, die mir gerade bei den von Helga erwähnten HTML-Dateien die Kodierung ausgibt: jan@linux:~> file Documents/HomePage/jan/index.html Documents/HomePage/jan/index.html: HTML document text jan@linux:~> file -i Documents/HomePage/jan/index.html Documents/HomePage/jan/index.html: text/html Gruß, Jan -- Real Users never use the Help key.
Am Sonntag 21 August 2005 20:03 schrieb Jan Ritzerfeld:
Am Sonntag, 21. August 2005 19:46 schrieb Dieter Kluenter:
(...). .. doch das Gute liegt so nah... file(1) sollte dir alles sagen.
Dachte ich zuerst auch, aber irgendwie finde ich nicht die Option, die mir gerade bei den von Helga erwähnten HTML-Dateien die Kodierung ausgibt: jan@linux:~> file Documents/HomePage/jan/index.html Documents/HomePage/jan/index.html: HTML document text
Bei mir ist die Ausgabe (file -i <datei>) sehr gemischt. Mal setzt er mir die Kodierung dazu, mal nicht. Das ist nicht das, was ich haben will. Gerade bei den HTML-Dateien weiß ich ja, dass es HTML-Dateien sind. Was mich aber interessiert, sind sie utf8, 8859-15 oder ein krankes Gemisch. Helga -- ## OpenSource-Werkstatt in Reutlingen -- http://www.eschkitai.de/ ## Etikette - Nein Danke? -- http://www.suse-etikette.de.vu/ ## Wer hilft? -- http://hsqldb.sourceforge.net/web/openoffice.html ## Vote for: http://bugs.kde.org/show_bug.cgi?id=77109
Am Sonntag, 21. August 2005 20:38 schrieb Helga Fischer:
(...). Gerade bei den HTML-Dateien weiß ich ja, dass es HTML-Dateien sind. Was mich aber interessiert, sind sie utf8, 8859-15 oder ein krankes Gemisch.
Ich weiß, deswegen dieser Hinweis in meiner ersten Antwort: http://www.cl.cam.ac.uk/~mgk25/unicode.html#perl Nimm die Zeile nach "Locate malformed UTF-8 sequences:" und schreib die zu testenden Dateinamen dahinter. Funktioniert das nicht wie gewünscht? Gruß, Jan -- The knowledge that a secret exists is half the secret.
Jan Ritzerfeld
Am Sonntag, 21. August 2005 19:46 schrieb Dieter Kluenter:
(...). .. doch das Gute liegt so nah... file(1) sollte dir alles sagen.
Dachte ich zuerst auch, aber irgendwie finde ich nicht die Option, die mir gerade bei den von Helga erwähnten HTML-Dateien die Kodierung ausgibt: jan@linux:~> file Documents/HomePage/jan/index.html Documents/HomePage/jan/index.html: HTML document text jan@linux:~> file -i Documents/HomePage/jan/index.html Documents/HomePage/jan/index.html: text/html
Dazu gibt es keine Option, der etwas längere Vorspann von man (1) file beschreibt die Vorgehensweise. Eine HTML Datei wird als Textdatei interpretiert, unabhängig von der locale Umgebung. Das HTML Protokoll interessiert sich nicht für locale, sondern setzt immer ascii voraus. Zeichen ,die über 7 Bit hinausgehen, müssen durch besondere Tags beschrieben werden, z.B. ü -Dieter -- Dieter Klünter | Systemberatung http://www.dkluenter.de GPG Key ID:8EF7B6C6
Am Sonntag, 21. August 2005 20:41 schrieb Dieter Kluenter:
(...). Dazu gibt es keine Option, der etwas längere Vorspann von man (1) file beschreibt die Vorgehensweise. Eine HTML Datei wird als Textdatei interpretiert, unabhängig von der locale Umgebung. Das HTML Protokoll interessiert sich nicht für locale, sondern setzt immer ascii voraus. Zeichen ,die über 7 Bit hinausgehen, müssen durch besondere Tags beschrieben werden, z.B. ü
Alsoooo: 1. es gibt kein "HTML Protokol" :-P 2. HTML setzt keinesfalls "immer ascii voraus" 3. Helga hat den Zeichensatz ihrer HTML-Dateien mittels quanta "versaut" Gruß, Jan -- Create the impression that you have already reached your level of incompetence.
Jan Ritzerfeld
Am Sonntag, 21. August 2005 20:41 schrieb Dieter Kluenter:
(...). Dazu gibt es keine Option, der etwas längere Vorspann von man (1) file beschreibt die Vorgehensweise. Eine HTML Datei wird als Textdatei interpretiert, unabhängig von der locale Umgebung. Das HTML Protokoll interessiert sich nicht für locale, sondern setzt immer ascii voraus. Zeichen ,die über 7 Bit hinausgehen, müssen durch besondere Tags beschrieben werden, z.B. ü
Alsoooo: 1. es gibt kein "HTML Protokol" :-P 2. HTML setzt keinesfalls "immer ascii voraus" 3. Helga hat den Zeichensatz ihrer HTML-Dateien mittels quanta "versaut"
Gut, es gibt kein HyperText Markup Language 'Protokoll', sondern HTML ist nur ein Subset von SGML. d.h. es gibt nur Empfehlungen und Richtlinien. RFC1866, in der HTML 2.0 beschrieben wird, sspricht sinngemäss davon, dass iso-8859-1 und iso-10646 unterstützt wird, dass aber empfohlen wird, nur die ersten 7 Bit der Zeichensätze zu verwenden, darüber hinaus gehende Zeichen durch 'Special Character' darzustellen. Die RFC Spricht auch davon, dass der Zeichensatz des Dokumentes unabhängig ist von dem Zeichensatz der Darstellung. (1.2.1 Documents) Sicherlich hat Helga ihre Dokumente durch Quanta versaut, aber das Hauptproblem liegt darin, dass sie 8 Bit Zeichen nicht durch Special Characters darstellt und dadurch in den Konflikt zwischen iso-8859-1 und UTF-8 bei der Darstellung gerät. -Dieter -- Dieter Klünter | Systemberatung http://www.dkluenter.de GPG Key ID:8EF7B6C6
Am Sonntag, 21. August 2005 22:11 schrieb Dieter Kluenter:
(...). Gut, es gibt kein HyperText Markup Language 'Protokoll', sondern HTML ist nur ein Subset von SGML. d.h. es gibt nur Empfehlungen und Richtlinien. RFC1866, in der HTML 2.0 beschrieben wird, sspricht sinngemäss davon, dass iso-8859-1 und iso-10646 unterstützt wird,
Soweit ich das verstehe ist nach 4.1. für "HTML over HTTP" iso-8859-1 der default.
dass aber empfohlen wird, nur die ersten 7 Bit der Zeichensätze zu verwenden, darüber hinaus gehende Zeichen durch 'Special Character' darzustellen. Die RFC Spricht auch davon, dass der Zeichensatz des Dokumentes unabhängig ist von dem Zeichensatz der Darstellung. (1.2.1 Documents)
Bei HTML 4 sieht das so aus: http://www.w3.org/TR/html4/charset.html#didx-character_encoding
Sicherlich hat Helga ihre Dokumente durch Quanta versaut, aber das Hauptproblem liegt darin, dass sie 8 Bit Zeichen nicht durch Special Characters darstellt und dadurch in den Konflikt zwischen iso-8859-1 und UTF-8 bei der Darstellung gerät.
Sie hätte sich den Ärger durch entities ersparen können, ja. Aber es spricht nichts dagegen Latin1 oder UTF8 zu benutzen solange man diesen Zeichensatz dann auch deklariert. Außer der Webserver schickt einen gegenteiligen Content-Type mit, der auch im HTML-Dokument nicht überschrieben werden kann (siehe Liste unter http://www.w3.org/TR/html4/charset.html#h-5.2.2). Naja, jetzt hat sie den Salat und bei dem Zeichensatzwirwar wird sie die 8-Bit-Zeichen nicht einfach durch deren entities ersetzt bekommen, bevor sie den Zeichensatz ihrer HTML-Dokumente festgestellt hat. Und das sollte praktisch mit dem von mir gefundenen perl-Einzeiler zu bewerkstelligen sein, weil UTF-8 eine bestimmte Syntax voraussetzt, die ein Latin1-Dokument normalerweise nicht aufweist. Gruß, Jan -- No man's life, liberty or possessions are safe while the legislature is in session.
Hallo Jan, das wird hier ja richtig kompliziert. Am Sonntag 21 August 2005 22:28 schrieb Jan Ritzerfeld:
Am Sonntag, 21. August 2005 22:11 schrieb Dieter Kluenter:
(...). Gut, es gibt kein HyperText Markup Language 'Protokoll', sondern HTML ist nur ein Subset von SGML. d.h. es gibt nur Empfehlungen und Richtlinien.
[...]
Soweit ich das verstehe ist nach 4.1. für "HTML over HTTP" iso-8859-1 der default.
[...]
Sicherlich hat Helga ihre Dokumente durch Quanta versaut, aber das Hauptproblem liegt darin, dass sie 8 Bit Zeichen nicht durch Special Characters darstellt und dadurch in den Konflikt zwischen iso-8859-1 und UTF-8 bei der Darstellung gerät.
Die üblichen HTML-Entities hatte ich (natürlich) drin, gab aber trotzdem Zeichensalat.
Sie hätte sich den Ärger durch entities ersparen können, ja. Aber es spricht nichts dagegen Latin1 oder UTF8 zu benutzen solange man diesen Zeichensatz dann auch deklariert. Außer der Webserver schickt einen gegenteiligen Content-Type mit, der auch im HTML-Dokument nicht überschrieben werden kann (siehe Liste unter http://www.w3.org/TR/html4/charset.html#h-5.2.2).
Ahja, interessant. Das erklärt den Zeichensalat auf meiner eigenen Webpage. Das ist als Zeichensatz 8859-15 im Header deklariert. Ich habe eine bestehende Datei angefasst und sie mit quanta bearbeitet, dessen Zeichensatz utf8 war. Schaut man in der internen Vorschau die Datei dann an, sieht sie OK aus. Der Fehler macht sich erst im Browser bemerkbar oder dann, wenn man die Datei schon auf den Webspace hochgeladen hat.
Naja, jetzt hat sie den Salat und bei dem Zeichensatzwirwar wird sie die 8-Bit-Zeichen nicht einfach durch deren entities ersetzt bekommen, bevor sie den Zeichensatz ihrer HTML-Dokumente festgestellt hat. Und das sollte praktisch mit dem von mir gefundenen perl-Einzeiler zu bewerkstelligen sein, weil UTF-8 eine bestimmte Syntax voraussetzt, die ein Latin1-Dokument normalerweise nicht aufweist.
Den Einzeiler muss ich noch probieren. Leider beschränkt sich dieses Problem nicht auf HTML, sondern auch auf exotischere Formate wie *.po, das sind Übersetzungsdateien. Oder, ich habe irgendeine beliebige Datei und weiß beim besten Willen nicht mehr, wie sie kodiert ist. Ich möchte sie aber mittels recode umkodieren. recode macht aus einer 8859-15-Datei gerne eine utf8-Datei, aber die Ausgangsannahme sollte stimmen. Ich kann euch das leider nicht besser erklären, weil ich von der Materie nur einen Teil verstehe. Helga -- ## OpenSource-Werkstatt in Reutlingen -- http://www.eschkitai.de/ ## Etikette - Nein Danke? -- http://www.suse-etikette.de.vu/ ## Wer hilft? -- http://hsqldb.sourceforge.net/web/openoffice.html ## Vote for: http://bugs.kde.org/show_bug.cgi?id=77109
Hi all, Am Sonntag 21 August 2005 22:58 schrieb Helga Fischer: [...]
Oder, ich habe irgendeine beliebige Datei und weiß beim besten Willen nicht mehr, wie sie kodiert ist. Ich möchte sie aber mittels recode umkodieren. recode macht aus einer 8859-15-Datei gerne eine utf8-Datei, aber die Ausgangsannahme sollte stimmen.
Ich will noch ein Beispiel anführen, weil ich gerade über drüber gestolpert bin. Datei von werweiswann geöffnet, kaputte Umlaute :(( Wer will sowas schon reparieren? helga@Einstein:~/persoenlich/sigs> file -i privat privat: text/plain; charset=iso-8859-1 Hier habe ich jetzt das charset geliefert bekommen und mit recode umkodiert. helga@Einstein:~/persoenlich/sigs> /usr/bin/recode lat1..utf8 pirvat helga@Einstein:~/persoenlich/sigs> file -i privat privat: text/plain; charset=utf-8 Wenn man das Ausgangs-charset nicht kennt, zerhäckselt auch recode die Datei. Habe ich auch schon hingekriegt. Leider liegen in meinem /home/helga noch allerlei Uraltdaten rum, die von x Generationen SuSE-Linux geschrieben wurden, die ich vielleicht doch mal wieder anfasse - so wie jetzt gerade das privat-File oder meine Homepage. Helga -- ## OpenSource-Werkstatt in Reutlingen -- http://www.eschkitai.de/ ## Etikette - Nein Danke? -- http://www.suse-etikette.de.vu/ ## Wer hilft? -- http://hsqldb.sourceforge.net/web/openoffice.html ## Vote for: http://bugs.kde.org/show_bug.cgi?id=77109
Am Montag, 22. August 2005 00:13 schrieb Helga Fischer:
(...). Wenn man das Ausgangs-charset nicht kennt, zerhäckselt auch recode die Datei. Habe ich auch schon hingekriegt.
Wenn du latin1..utf8 auf eine UTF-8-Datei losläßt, kannst du das mit utf8..latin1 wieder reparieren.
Leider liegen in meinem /home/helga noch allerlei Uraltdaten rum, die von x Generationen SuSE-Linux geschrieben wurden, die ich vielleicht doch mal wieder anfasse - so wie jetzt gerade das privat-File oder meine Homepage.
Ich habe nach der Umstellung auf UTF-8 (hier SL 9.2) einfach alle Text-Dateien durch iconv gejagt. Da wußte ich natürlich, daß die mit an Sicherheit grenzender Wahrscheinlichkeit latin1-kodiert waren. Gruß, Jan -- A candidate is a person who gets money from the rich and votes from the poor to protect them from each other.
Am Sonntag, 21. August 2005 22:58 schrieb Helga Fischer:
das wird hier ja richtig kompliziert.
Ja, wobei das noch harmlos ist, da du ja ungefähr weißt, was da stehen sollte. Wenn man irgendwelche Strings vom ICQ-Server bekommt und keinen blassen Schimmer hat, ob das nun UTF-8 oder Latin1 oder was auch immer ist, dann hat man richtigen Spaß.
(...). Die üblichen HTML-Entities hatte ich (natürlich) drin, gab aber trotzdem Zeichensalat.
Dann hattest du aber zusätzlich Umlaute oder sowas drin.
(...). Ahja, interessant. Das erklärt den Zeichensalat auf meiner eigenen Webpage. Das ist als Zeichensatz 8859-15 im Header deklariert. Ich habe eine bestehende Datei angefasst und sie mit quanta bearbeitet, dessen Zeichensatz utf8 war.
Schaut man in der internen Vorschau die Datei dann an, sieht sie OK aus.
Das ist doch schonmal super! Dann müßtest du den Zeichensatz in der HTML-Datei nur auf utf-8 stellen und hoffen.
Der Fehler macht sich erst im Browser bemerkbar
Weil der wahrscheinlich als default von Latin1 oder sowas ausgeht.
oder dann, wenn man die Datei schon auf den Webspace hochgeladen hat.
Wie oben geschrieben könnte dir der Server noch einen Strich durch die Rechnung machen, indem der immer Latin1 als Content-Type mitschickt. Dann mußt du die HTML-Dateien tatsächlich zurück nach Latin1 konvertieren.
(...). Den Einzeiler muss ich noch probieren.
Leider beschränkt sich dieses Problem nicht auf HTML, sondern auch auf exotischere Formate wie *.po, das sind Übersetzungsdateien.
Ich habe mir mal ein paar davon auf meinem System angesehen, die sind hier auch in UTF-8 kodiert.
Oder, ich habe irgendeine beliebige Datei und weiß beim besten Willen nicht mehr, wie sie kodiert ist.
Dann hilft nur probieren. Außer der Zeichensatz ist in der Datei angegeben, wie bei deinen HTML-Dokumenten.
Ich möchte sie aber mittels recode umkodieren. recode macht aus einer 8859-15-Datei gerne eine utf8-Datei, aber die Ausgangsannahme sollte stimmen.
Sei froh, daß du nur zwischen Latin1 o.ä. und UTF-8 unterscheiden mußt. Und nicht zwischen Koreanisch, Japanisch, Chinesisch etc., wie Browser, wenn kein Zeichensatz angegeben ist. :)
Ich kann euch das leider nicht besser erklären, weil ich von der Materie nur einen Teil verstehe.
Naja, es ist eine Kodierung. Alles was über reines 7-Bit-ASCII hinausgeht muß kodiert und wieder dekodiert werden. Stell dir das so vor, wie bei einer Verschlüsselung: du brauchst den Schlüssel zum Ver- und Entschlüsseln. Der Schlüssel ist hier Latin1 oder UTF-8. Dein Glück ist, daß UTF-8 eine bestimmte Syntax aufweist, was es in der Regel von Latin1 unterscheidet. Der Perl-Einzeiler prüft, ob die Eingabedatei wohlgeformt im Sinne von UTF-8 ist. Auch convmv erkennt schon in UTF-8 kodierte Dateinamen und konvertiert sie nicht, frag mich nicht, warum recode und iconv das nicht tun (jedenfalls hab ich so auf die Schnelle keine Option dafür gefunden). Gruß, Jan -- A closed mouth gathers no feet.
Hallo Dieter, Am Sonntag 21 August 2005 19:46 schrieb Dieter Kluenter:
Helga Fischer
writes: sagt mal, gibt es eine Möglichkeit, einer Datei anzusehen, wie sie kodiert ist? Ich solte utf8 von iso8859-15 unterscheiden können.
.. doch das Gute liegt so nah... file(1) sollte dir alles sagen.
Hmmm... da habe ich doch reingeguckt, in der Hoffnung, dass ich da was sehe... Helga -- ## OpenSource-Werkstatt in Reutlingen -- http://www.eschkitai.de/ ## Etikette - Nein Danke? -- http://www.suse-etikette.de.vu/ ## Wer hilft? -- http://hsqldb.sourceforge.net/web/openoffice.html ## Vote for: http://bugs.kde.org/show_bug.cgi?id=77109
participants (3)
-
Dieter Kluenter
-
Helga Fischer
-
Jan Ritzerfeld