Character Set TroubleShooting
hotti
- sonstiges
hi Ihrs,
ich freue mich, dass ich das heute noch fertig gekriegt habe:
Viel Spaß damit,
einen schönen Sonntagabend und
viele Grü?e,
Horst Gammelfleisch
Klasse Beschreibung,
genau so etwas hätte ich früher gebraucht ;)
moin,
Auf w3.org weise ich ebenfalls gerne hin (siehe Artikel). Ich würde auch gerne auf SELFHTML hinweisen ;-)
Horst Unbekannt
Hi,
Und bis auf den letzten Link geht keiner der von dir gelinkten Artikel das Problem auf umfassendere Weise an. Jeder Artikel verblieb in seinem Bereich und schaute nicht über den Tellerrand (z.B. auf die Konsequenzen in Perl oder PHP).
Von daher finde ich den Artikel richtig gut.
Ciao,
Wolfgang
Von daher finde ich den Artikel richtig gut.
Naja, u.a. ist der Abschnitt über utf8 in Perl leider falsch. Insofern dürfte er nur bedingt brauchbar sein.
Struppi.
Hi,
Von daher finde ich den Artikel richtig gut.
Naja, u.a. ist der Abschnitt über utf8 in Perl leider falsch. Insofern dürfte er nur bedingt brauchbar sein.
Wenn du von einem Fehler weist und in einem Thread der um Feedback bittet diesen nicht nennst, spricht dies sicherlich nicht für dich.
Ciao,
Wolfgang
Wenn du von einem Fehler weist und in einem Thread der um Feedback bittet diesen nicht nennst, spricht dies sicherlich nicht für dich.
Was willst du? Ich muss in 10 Minuten weg zum Bahnhof und hatte gestern schon eine Kritik angefangen, aber keine Zeit dafür diese fundiert abzuschiocken.
Das spricht nicht unbedingt für dich. Da auch Hotti weiß dass ich hier durchaus auch umgangreichere Kritik äussere und Begründe. Was soll also diese Bemerkung?????
Eigentlich hatte ich gehofft, dass dir das auffällt, da du dich ja mit Perl auskennst. Aber das war wohl ein Fehler.
Struppi.
Hi,
Wenn du von einem Fehler weist und in einem Thread der um Feedback bittet diesen nicht nennst, spricht dies sicherlich nicht für dich.
Was willst du? Ich muss in 10 Minuten weg zum Bahnhof und hatte gestern schon eine Kritik angefangen, aber keine Zeit dafür diese fundiert abzuschiocken.
Wie auch immer: Du hattest Zeit jetzt zwei Replys auf mich zu machen, aber nicht eine Zeile übrig um auf den Fehler konkret hinzuweisen. Stattdessen bezeichnest du wegen eines Perlfehlers den ganzen Artikel als nur bedingt brauchbar und machst ihn dadurch pauschal schlecht.
Ich finde das ist ein bescheidenes Verhalten. Wenn dich das aufregt, dass ich das kritisiere, dann setz mich auf Ignore.
Ciao,
Wolfgang
Ich finde das ist ein bescheidenes Verhalten. Wenn dich das aufregt, dass ich das kritisiere, dann setz mich auf Ignore.
Das ist vermutlich das Beste. Ich hab einfach nicht die fachliche Kompetenz meine Beobachtung, die dem Artikel widersprachen, richtig zu deuten. Die hatte ich bei dir vermutet, das spricht sicherlich nicht für mich. Entschuldigung.
Ich werde, wenn ich nächste Woiche wieder zu hause bin, gerne mich noch mal hinsetzen, aber ich denke mal bis dahin ist der Thread im Archiv.
Nur soviel, dass was im Artikel über utf8 steht scheint falsch zu sein, da ich keine Fehlermeldung erhalte, egal welche Kodierung ich benutze. Aber wie gesagt ich hatte vorgestern nicht die Zeit und jetzt sitze ich nicht an meinem Rechner. Aber ich bleibe dabei, der Abschnitt über Perl scheint nur bedingt gebrauchbar zu sein.
Struppi.
Und bis auf den letzten Link geht keiner der von dir gelinkten Artikel das Problem auf umfassendere Weise an. Jeder Artikel verblieb in seinem Bereich und schaute nicht über den Tellerrand (z.B. auf die Konsequenzen in Perl oder PHP).
Da ich nun wieder zu Hause bin komnnte ich mich auch nochmal mit dem Thema beschäftigen. Wie schon gesagt, ich hatte die Kompetenz dazu bei dir vermutet und war aufgrund dessen verwundert über deine Aussage.
Das du mich dann persönlich angehst verwundert mich noch mehr, da ich dich seit gut 10 Jahren hier lese, ebenso wie deinen Blog und eigentlich immer geschätzt hatte. Anscheinend hab ich dir mal was getan oder was auch immer. Egal.
Zum Artikel
Die Aussage:
In Perl-Scripts, die in utf-8 gespeichert sind, sollten folgende Zeile enthalten:
use utf8;
Damit wird bereits dem Perl-Interpreter signalisiert, dass die Datei utf-8-codiert vorliegt. Andererseits gibt der Interpreter eine Fehlermeldung aus, wenn eine print-Anweisung Umlaute enthält:
Malformed UTF-8 character (1 byte, need 6) at...
Das passiert zumindest bei mir (Perl 5.10) nicht. Nur wenn ich eine ANSI kodierte Zeichenkette ausgebe und das Pragma utf8 verwende, dann erhalte ich: Wide character in print at test.pl line xxx.
Auch führt keine derartige Meldung zu einem 500'ern Fehler im Browser. Die häufigste Ursache für einen 500'er Fehler ist ein fehlerhafter Header, der z.b. durch eine Warnung, wie die obige, verursacht wird. Allerdings hat das ganze nur indirekt mit der Zeichenkodierung zu tun. Denn der Fehler im Browser würde nicht auftreten, wenn die Warnungen nicht ausgegeben werden oder wenn der header zuvor ausgegeben wird.
Daneben ist aber die ganze Aussage auch falsch, da use utf8 die Ausgabe verändert, d.h. die Zeichen werden falsch ausgeben.
mit use utf8; und ohne
Insofern ist deine Aussage, der Artikel ist richtig gut (weil er über den Tellerrand nach Perl schaut), eigentlich richtig schlecht, da er genau dort falsch ist.
Aber Rolf will den Artikel ja sowieso überarbeiten.
Der Abschnitt darüber, "CGI-Skripts" ist zumindest schwer mißverständlich. Denn dem Ausgabe Befehlen ist es egal in welcher Kodierung ein Skript abgespeichert wurde. print oder echo senden die Zeichenkette so wie sie da stehen (zumindest ohne use utf8). Daher kann man auch ohne Probleme eine utf-8 Seite mit einem Skript, dass in ISO abgespeichert wurde erstellen. In dem Skript sind die Zeichenketten dann eben u.U. nicht lesbar oder sie kommen von einer externen (in utf-8 kodierten) Quelle, z.b. einer Datenbank.
und ich muss mich ausdrücklich nochmal entschuldigen, wenn ich fälschlicherweise davon ausging, dass du so etwas bemerken könntest. Ich wollte nicht deinen Unmut erregen, zumal ich - wie gesagt - bisher dein Tun immer geschätzt hatte.
Struppi.
@@hotti:
nuqneH
Dazu ein paar Anmerkungen:
Character Set TroubleShooting
Nein! Im Artikel geht es nicht um Zeichensatz, sondern um Zeichencodierung.
Eine englische Überschrift für einen deutschsprachiger Artikel? Äußerst zweifelhaft. Troubleshooting – kein CamelCase.
die Deklaration im HTML-Header
Es gibt keinen „HTML-Header“.
Die Kodierung der Zeichen in ANSI entspricht weitgehend der ISO-Kodierung …
Welcher ISO-Codierung? Ich würde denken, mit „ANSI“ ist Windows-1252 gemeint.
… und ist abhängig von der Sprache des Betriebsystems, auf dem die Datei erzeugt wird.
Wie bitte?
Im HTML-Header muss die verwendete Kodierung deklariert werden wie folgt:
„Sollte“, nicht „muss“. [RFC2119]
WebSite
Website – kein CamelCase.
Convertierungen
Codierung mit K zu schreiben ist IMHO unschön, aber nicht falsch, andersrum Konvertierung mit C aber wohl doch.
Nach diesen ersten Amtshandlungen …
„Amtshandlungen“?? Postamt? Oder willst du deine Leser vor Gericht zerren? Dieses Wort hat in einem solchen Artikel nichts zu suchen.
… möglicherweise jedoch, wird sie dennoch nicht richtig dargestellt.
Da ist ein Komma zu viel. Und ein „jedoch“ wohl auch.
Betrachten wir dazu das HTTP-Protokoll genauer gesagt: den HTTP-Header …
Das eben eingesparte Komma kannst du hier gleich wieder einsetzen. Oder noch besser einen Gedankenstrich: „Betrachten wir dazu das HTTP-Protokoll – genauer gesagt: den HTTP-Header …“
PlugIn
Plug-in – kein CamelCase.
So, das reicht erstmal. Weiter hab ich noch nicht gelesen.
Qapla'
moin,
Character Set TroubleShooting
Nein! Im Artikel geht es nicht um Zeichensatz, sondern um Zeichencodierung.
Korrekt. Nirgendwo im Artikel steht das Wort "Zeichensatz". Ich selbst übersetze das Kunstwort "charset" als "Character Settings".
Ansonsten danke für Deine Hinweise!
Viele Grüße,
Horst Haselhuhn
@@hotti:
nuqneH
Korrekt. Nirgendwo im Artikel steht das Wort "Zeichensatz".
Doch, in der Überschrift. „Character set“ heißt auf Deutsch „Zeichensatz“.
Ich selbst übersetze das Kunstwort "charset" als "Character Settings".
?? Zeicheneinstellungen? Das ist wohl kaum sinnvoll.
Wann immer von "charset" die Rede ist, ist „character encoding“, also „Zeichencodierung“ gemeint.
Qapla'
Korrekt. Nirgendwo im Artikel steht das Wort "Zeichensatz".
Doch, in der Überschrift. „Character set“ heißt auf Deutsch „Zeichensatz“.
Ich selbst übersetze das Kunstwort "charset" als "Character Settings".
?? Zeicheneinstellungen? Das ist wohl kaum sinnvoll.
Wann immer von "charset" die Rede ist, ist „character encoding“, also „Zeichencodierung“ gemeint.
Nein. da ist ein _en-_ zuviel.
Ein Charset ist eine Tabelle von Unicode-zu-Bytes Festlegungen.
Charset ist der Feldbezeichner, der du einen Charset-Wert zuweist, meint also den Namen einer solchen Tabelle.
Code ist ein abstrakter Punkt wie in Unicode in dieser Tabelle.
Encode und Decode sind Funktionen der Transformation zwischen zwei Tabellen.
Zwei Charsets sind beteiligt. Selten muss man beide Charsets angeben, da meist ein internes Charset beteiligt ist (bei Perl zum Beispiel ein UTF-8 Derivat, bei www-urlencode ein Algorithmus der zudem Characters ausserhalb ASCII als ASCII transportiert, unter anderem). Manchmal muss man gar kein charset angeben, weil er aus einem anderen Wert angewendet wird.
Bei url_encode wird nämlich das Programm-interne Charset als Input verwendet. Die Transformation vom Content-Charset des Dokuments zum Programm-internen Charset ist da bereits Geschichte.
mfg Beat
@@Beat:
nuqneH
Wann immer von "charset" die Rede ist, ist „character encoding“, also „Zeichencodierung“ gemeint.
Nein. da ist ein _en-_ zuviel.
Zeichcodierung??
Zwei Charsets sind beteiligt. Selten muss man beide Charsets angeben, da meist ein internes Charset beteiligt ist (bei Perl zum Beispiel ein UTF-8 Derivat, bei www-urlencode ein Algorithmus der zudem Characters ausserhalb ASCII als ASCII transportiert, unter anderem).
Also für mich sind Zeichencodierung und Escapes zwei verschiedene Paar Schuhe.
Qapla'