zurück zur Startseite
  


Zurück XHTMLforum > Sonstiges > Offtopic
Seite neu laden UTF-7 und UTF-32

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 10.11.2013, 20:24
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard UTF-7 und UTF-32

Hi ich experimentiere gerade ein wenig mit einem von mir erstellten Programm herum. Dazu habe ich eine Testdatei in Ascii-Format gespeichert.
HTML-Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title> Test-Datei
    </title>
</head>

<body>
    <p>Das ist eine Test-Datei</p>
</body>
</html>
Nun Konvertiere ich die Datei in UTF-7 und bekomme dies
Zitat:
+ADwAIQ-DOCTYPE html PUBLIC +ACI--//W3C//DTD XHTML 1.0 Strict//EN+ACI-
+ACI-http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd+ACIAPg-

+ADw-html xmlns+AD0AIg-http://www.w3.org/1999/xhtml+ACIAPg-
+ADw-head+AD4-
+ADw-title+AD4- Test-Datei
+ADw-/title+AD4-
+ADw-/head+AD4-

+ADw-body+AD4-
+ADw-p+AD4-Das ist eine Test-Datei+ADw-/p+AD4-
+ADw-/body+AD4-
+ADw-/html+AD4-
und wenn ich die Datei als UTF-32 konvertiere, bekomme ich sowas:
Zitat:
< ! D O C T Y P E h t m l P U B L I C " - / / W 3 C / / D T D X H T M L 1 . 0 S t r i c t / / E N "

" h t t p : / / w w w . w 3 . o r g / T R / x h t m l 1 / D T D / x h t m l 1 - s t r i c t . d t d " >



< h t m l x m l n s = " h t t p : / / w w w . w 3 . o r g / 1 9 9 9 / x h t m l " >

< h e a d >

< t i t l e > T e s t - D a t e i

< / t i t l e >

< / h e a d >



< b o d y >

< p > D a s i s t e i n e T e s t - D a t e i < / p >

< / b o d y >

< / h t m l >
Kann es sein , dass diese Kodierungen richtig sind ?
MfG gabischatz
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 10.11.2013, 20:29
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Was ist deine Absicht?

(Die Ausgabe, die du postest, ist sicherlich eine Interpretation der Daten als 1-Byte-Zeichensatz wie ISO-8859-1 oder Windows-1252. Das ist „richtig“, wenn es das ist, was du willst.)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 10.11.2013, 22:02
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Hi ich schreibe gerade mit C# ein Programm mit dem ich ermitteln kann, in welchem Format eine Datei gespeichert wurde.
Um zu ermitteln ob ich ein Korrektes Ergebnis habe, habe ich mit Scriptly eine Datei erstellt und diese in verschiedene Formate konvertiert.
Das Programm läuft soweit ok. Ich dachte mir erstellst du selber Kopien dieser Datei in den verschiedenen Formaten und machst eine weitere Testreihe.
Dabei sind die beiden Dateien entstanden. Mit der UTF-32 kann ich leben, denke die ist Ok aber die UTF-7 da weis ich nicht so richtig ob das so Ok ist.
Zitat:
Die Ausgabe, die du postest, ist sicherlich eine Interpretation der Daten als 1-Byte-Zeichensatz wie ISO-8859-1 oder Windows-1252.
Ich weiß nicht wie ich den Zeichensatz beim speichern einer Datei in C# beeinflussen kann, Kodiert ist die Original-Datei mit ISO-8859-1, das stimmt.
Jetzt will ich noch ein Tool einbauen das falsch Kodierte Dateien im richtigen Format speichert oder umgekehrt.
Grüsse
Mit Zitat antworten
  #4 (permalink)  
Alt 10.11.2013, 22:35
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Verwende am besten durchgängig UTF-8, das ist auch W3C Empfehlung.
-> Character encodings

Die Browser müssen UTF-7 oder UTF-32 nicht können. Bedenke auch das Browser ISO-8859-1 als Windows CP1252 interpretieren.

Wozu also der Aufwand.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
  #5 (permalink)  
Alt 10.11.2013, 22:45
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Die UTF-7-Datei scheint aber korrekt zu sein, ja.

Es ist praktisch allerdings mehr oder weniger unmöglich (d. h. nur mit Heuristiken „möglich“), zu entscheiden, ob eine Datei in UTF-7 kodiert ist, weil UTF-7 gewissermaßen eine Untermenge von 7-Bit-ASCII ist und 7-Bit-ASCII eine Untermenge diverser anderer Zeichensätze (etwa ISO-8859-* oder Windows-1252 oder sogar UTF-8). Soll heißen: Eine gültige UTF-7-Datei ist zum Beispiel auch eine gültige UTF-8-Datei.

Geändert von mermshaus (10.11.2013 um 22:50 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 10.11.2013, 22:52
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 12.11.2010
Ort: Bad Langensalza
Beiträge: 733
gabischatz ist in Verruf geraten
Standard

Wie schon gesagt erkennen kann das Programm alles, auch wenn es fürs Internet nicht wichtig ist. Mir ging es nur darum, wie schwer ist es zu erkennen ob eine Datei im Ascii oder UTF-8 Modus gespeichert wurde. Viele gute Programme tun sich schwer die Datei im richtigen Modus zu laden, so auch Scriptly.
Nachtrag: ich liefere es nach sobald ich weitere Tests fertig habe oder per Nachfrage.
Mit Zitat antworten
  #7 (permalink)  
Alt 10.11.2013, 23:16
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Zitat:
Mir ging es nur darum, wie schwer ist es zu erkennen ob eine Datei im Ascii oder UTF-8 Modus gespeichert wurde.
Wenn die Datei einen String wie "Hallo Welt" enthält, ist es unmöglich, zu erkennen, ob die Datei als UTF-8, als ISO-8859-1, als 7-Bit-ASCII, als UTF-7 oder als eine Latte anderer Zeichensätze abgespeichert wurde. (BOM mal außen vor.)

Die resultierenden Binärdaten geben diese Unterscheidung schlicht und ergreifend nicht her, weil sie in jedem dieser Zeichensätze identisch sind.

Das ist ungefähr so, als solltest du anhand der Zeichenfolge „abcde test text“ sagen, was die Muttersprache des Autors ist. Es scheint anhand des Alphabets sinnvoll, in Richtung US-Amerikaner, Engländer, Deutscher zu gehen – aber am Ende ist es doch ein Chinese.

Du kannst nur mit mehr oder weniger genauem Hintergrundwissen (und mit guten oder schlechten Präferenzen in Zweifelsfällen) raten. Dasselbe tut auch ein Editor, der dir "Hallo Welt" als beispielsweise UTF-8 oder Windows-1252 ausweist. Der Editor nimmt da – je nach Betriebssystem/Version – an, dass im Zweifel schon das und das sinnvoll sein wird.

Geändert von mermshaus (10.11.2013 um 23:23 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 10.11.2013, 23:30
?!?
XHTMLforum-Kenner
 
Registriert seit: 20.03.2013
Beiträge: 1.638
explanator sorgt für eine eindrucksvolle Atmosphäreexplanator sorgt für eine eindrucksvolle Atmosphäre
Standard

Ergänzend:

Bitvergleich für den Buchstaben A
Code:
ISO-8859-x      01000001
ASCII           01000001
Amiga           01000001
Atari           01000001
Apple           01000001
UTF-8  00000000 01000001
Wie will man da erkennen woher eine Datei kommt, wenn sie keine Sonderzeichen verwendet.
__________________
"Wieso ist der Code schrott, ich dachte hier seien Profis..."
Aus einem Forum.
Mit Zitat antworten
  #9 (permalink)  
Alt 11.11.2013, 00:05
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 745
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

Sicher, dass das UTF-8 ist? (Da ist "A" eigentlich auch nur ein Byte. Das ist bei dir etwa UTF-16BE.)

Mit Sonderzeichen (das bedeutet gemeinhin: Zeichen, die nicht in 7-Bit-ASCII enthalten sind) wird es schon eindeutiger, aber auch nicht wirklich besser.

Nehmen wir mal die beiden Bytes 0xC3 0xA4.

In UTF-8 ergeben die (zusammen) ein "ä".
In ISO-8859-1 und Windows-1252 ergeben die "ä".
In ISO-8859-7 ergeben die "Γ€".

Auch in anderen Zeichensätzen ist 0xC3 0xA4 eine grundsätzlich korrekte Folge von Bytes.

Man kann jetzt heuristisch und mit Weltwissen sagen, dass die Folge 0xC3 0xA4 wahrscheinlich ein Indiz dafür ist, dass die Eingabe als UTF-8 interpretiert werden sollte, weil ein deutscher a-Umlaut irgendwie mehr Sinn ergibt als "Γ€" (liebe Griechen, ich bitte euch…). Andererseits ist vielleicht inhaltlich tatsächlich "Γ€" gemeint (warum auch immer – mein Griechisch ist eingerostet). Der Punkt ist: Wir können es nicht ausschließen. Wir können letztlich nur auf Basis von Vermutungen raten. Formal ist alles korrekt und du kannst als Anwendung wohl kaum hergehen und den Leuten verbieten, inhaltlich was zu schreiben, das vielleicht Unsinn ist, wie auch immer du Unsinn dann definieren willst.

Was ich gerade geschildert habe, ist eine komplexe Überlegung, die kompliziert zu programmieren ist. Ein großer Teil der Software, der Kodierungen „bestimmen“ muss, wird viel simpler vorgehen und beispielsweise einfach versuchen, die Datei als UTF-8 zu laden. Geht das schief (weil manche Bytefolgen kein korrektes UTF-8 ergeben), wird der nächste Zeichensatz versucht. Klappt es, wird die Datei als UTF-8 bezeichnet. (Vergleiche dazu auch den zweiten Parameter von Funktionen wie mb_detect_encoding. Der ist genau dafür gedacht.)

Die Pointe ist: Das wird in etwa so gut funktionieren wie eine komplizierte Lösung, wenn man sich ein wenig daran hält, die Standardkodierung je nach Betriebssystem oder Land/Locale zu wählen.

Wenn du erst UTF-8 versuchst (ob die Eingabebytes formal korrekt sind), dann Windows-1252 und dann vielleicht ISO-8859-1, dürftest du in „westlichen“ Ländern die meisten Sachen korrekt identifizieren.

Geändert von mermshaus (11.11.2013 um 00:09 Uhr)
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 11.11.2013, 00:29
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von gabischatz Beitrag anzeigen
Nun Konvertiere ich die Datei in UTF-7 und bekomme dies
und wenn ich die Datei als UTF-32 konvertiere, bekomme ich sowas:

Kann es sein , dass diese Kodierungen richtig sind ?
Das ist die Quellcode anzeige in deinem Browser stimmts?
Ich weiß zwar nicht, was der da macht, aber ich seh das auch. Das hängt woh damit zusammen, dass der Browser kein UTF-7 kann, im Editor wird es normal dargestellt.
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
UTF 8 - Umlaute dann noch ändern oder nicht? Test5000 (X)HTML 1 15.09.2011 14:22
ISO und UTF Problem b74 Serveradministration und serverseitige Scripte 2 11.01.2009 22:25


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:19 Uhr.