Boardunity & Video Forum

Boardunity & Video Forum (https://boardunity.de/)
-   Programmierung und Datenbanken (https://boardunity.de/programmierung-datenbanken-f23.html)
-   -   UTF-8 oder iso-8859-1? (https://boardunity.de/utf-8-iso-8859-1-a-t2284.html)

Fabchan 22.08.2004 20:01

UTF-8 oder iso-8859-1?
 
Hi Leute!

Ich beschäftige mich in letzter Zeit mal wieder ein wenig mehr mit PHP und fange nach den Sommerferien, in denen ich meist andere Dinge im Kopf hatte, als vorm Rechner zu sitzen, mal wieder an, an meinem aktuellen PHP-Projekt weiterzuarbeiten.

Ich würde mich gerne ein bisschen mehr über UTF-8 und iso-8859-1 informieren, kennt jemand von euch Quellen, bei denne man sich informieren kann?

Welches Zeichenformat würdet ihr für HTML-Seiten bevorzugen?

Jan Stöver 22.08.2004 20:05

ISO 8859 x
http://www.lexitron.de/main.php?detail=true&eintrag=897
http://de.wikipedia.org/wiki/ISO_8859

UTF 8
http://www.lexitron.de/main.php?deta...e&eintrag=1037


ISO-Zeichensätze
ftp://ftp.unicode.org/Public/MAPPINGS/ISO8859/

Fabchan 22.08.2004 20:18

@Jannefant: Danke für die schnelle Antwort. Was würdest du bevorzugen?

Jan Stöver 22.08.2004 20:24

Ich habe mich mit dem Thema noch nicht großartig auseinander gesetzt.

Ich wage aber die Behauptung, dass beide Zeichensätze die entsprechende Unterstützung inne haben. Standard ist die ISO wenn man sich mal umschaut.

Bei <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> wird die Meta Angabe <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> als valide angenommen. Das ist bei UTF aber nicht anders.

MrNase 22.08.2004 21:13

Nun, UTF-8 findet man öfters bei amerikanischen Seiten wohingegen ISO-8859-1 bzw. ISO-8859-15 bei europäischen Seiten verwendet wird. Kann aber auch daran liegen, dass ö, ä, ü bei UTF-8 nicht korrekt (für uns) dargestellt wird. Da empfiehlt sich dann z.B. &Auml; oder & #196; (ohne Leerzeichen dazwischen) verwenden :)

itst 22.08.2004 21:20

Für den deutschen Sprachraum entweder ISO 8859 15 (Umlaute kann 1 zwar auch, aber das kennt kein EURO-Zeichen) oder UTF-16 verwenden. Oder Du brichts alles runter und benutzt us-ascii.

Worum genau gehts denn?

Einige Hinweise zur Geschichte der Zeichensätze und Links findest Duhier.

Fabchan 23.08.2004 16:12

@itst: Es geht um eine in PHP und MySQL geschriebene Software zur Verwaltung von Online-Fotoalben, kurz: eine Galerie, wie Coppermine oder Gallery. Also eine Software, bei der es normalerweise nicht auf so starke Umlautunterstützung wie zum Beispiel bei einem Wiki oder einem Wörterbuch ankommt, aber wenn die Möglichkeit besteht, warum nicht?

Was ich bisher mitgekriegt habe: UTF-8 kann anscheinend net überall richtig dargestellt werden, kennt aber deutlich mehr Zeichen, als die ISO-Zeichensätze.
Da meine Software zumindest im Frontend bei möglichst vielen Benutzern funktionieren soll, empfielt sich hier wohl eher ISO 8859 15, der Zeichensatz wird allerdings auch in jeder Sprachdatei extra definiert und normalerweise braucht wohl auch niemand eine Galerie, in der sowohl Araber, Russen und Europäer gleichtzeitig Inhalte verfassen.

LonelyPixel 23.08.2004 19:10

Du kannst verwenden, was du magst. Aber UTF-8 (Unicode) ist IMO die sauberere Lösung. Umlaute gibt's in beiden Varianten fehlerfrei, um das kurz klarzustellen. Probleme treten nur bei unsauberer Bezeichnung des Codes auf, wenn man z.B. UTF-8 Zeichen verwendet, aber das nicht angibt und der Browser von selbst auch nicht draufkommt.

Wenn du UTF-8 verwendest, muss das auch entsprechend so im HTML Code angegeben sein, dann klappt das auch mit allen gängigen Browsern. Vorteil: Alle Unicode-Zeichen (oder nur fast alle?) können dargestellt werden.

Wenn du ISO...1/15 verwendest, dann können die Unicode-Zeichen nur mit &#...; (oder &#x...;) dargestellt werden. Wenn jemand jetzt gerne russisch reden würde, dann merkt der Browser, dass der aktuelle Zeichensatz das nicht kann, und codiert die Zeichen in eben dieser HTML-Darstellung. Die werden also nicht in einem gültigen Zeichensatz (wie z.B. UTF-8) gespeichert auf deinem Server, sondern in ganz hässlicher HTML-Umschrift. Das ist an sich kein Problem, aber wenn du jetzt zur Anzeige alle & in &amp; umwandelst, dann haut das natürlich nicht mehr hin. Ich hab meine text->html-Funktion anfangs deshalb so gemacht, dass sie genau diese Hex-Codes nicht umwandelt, alle anderen & < > aber schon. Ist etwas tricky, geht aber auch.

Mein Tipp: Lass den Quatsch, mach es von anfang an sauber und verwende Unicode. Wenn du Umlaute in den HTML-Dateien speichern willst, sag deinem Texteditor, dass er das Zeug als UTF-8 (am besten ohne BOM) speichern soll. Und vergiss nicht, den character set in den entsprechenden Headerfeldern anzugeben. So hast du praktisch keine Probleme mehr. Ich hab mein Forum nach ner Weile auch komplett auf UTF-8 umgestellt und so löuft das jetzt seit nem Jahr.

Fabchan 14.09.2004 18:48

Muss das Tehma nochmal ankratzen. Hatte mich nach euren zahlreichen Antowrten letztendlich doch für ISO entschieden, heute habe ich mich mal wieder dran gesetzt und festgestellt, dass mein bisheriger treuer Weaverslave kein UTF-8 unterstützt. Kann jemand von euch einen Editor, der das kann, empfehlen?

codethief 14.09.2004 19:09

Wiesao brauchst du jetzt 'nen Editor mit UTF-8, wenn du ISO 8859-1 benutzen willst?

LonelyPixel 14.09.2004 19:25

Weaver-was? Google sagt mir, dass das Teil ne optisch richtig schön verspielte Oberfläche hat... ;)
Weiß nich, ich bin mit meinem minimalistisch konfigurierten Textpad eigentlich zufrieden. Kann UTF-8 perfekt, und noch weitere Formate/Kodierungen/etc. Leider kann man da keine Zeichen außerhalb des aktuell im System eingestellten Zeichensatzes eingeben. Das wird in deren Forum schon seit längerem bemängelt, aber die tun da scheinbar nix.
UltraEdit kann das zwar, aber machte mir nen recht komplexen Eindruck, als ich's vor einiger Zeit mal kurz angeschaut hab. Weiß nicht, in wie weit man das noch runterkonfigurieren kann.

Patrick Gotthardt 14.09.2004 19:35

JEdit.org kann das (hab damit allerdings nur scherereien, weil der zwar UTF-8 kodieren kann, jedoch dann die meisten Dateien auf meinem PC nicht mehr entziffern kann (d.h. ich müsste jedesmal beim speichern der Datei auf UTF-8 umschalten...)).

Soweit ich mich erinnere ist das bei Java-Sachen aber Standard (UTF-16)... (könntest also auch mal das Teil in meiner Sig testen, ist zwar noch nicht fertig, aber ich arbeite schon recht gern damit).

Fabchan 14.09.2004 19:37

@codethief: Ich bin auf die tolle Idee gekommen, das Ganze jetzt doch noch komplett auf UTF-8 umzustellen, aber anscheined macht das zuviel Ärger.

Wenn ich die Dateien nicht als UTF-8 abspeichere, gibt der Browser es zwar korrekt aus, wenn ich die Umlaute nicht umschreibe, dann meckert allerdings der W3-Validator, selbst wenn ich UTF-8 HTTP-Header mitsende.

Wenn ich als UTF-8 abspeichere, kann ich die Datei mit vielen Editoren nicht mehr korrekt darstellen (und andere Leute, denen ich meine Skripte gebe, dann wohl auch nicht.)...:(

LonelyPixel 14.09.2004 19:43

Ähm, ich nehm mal an, dass du unter "alt UTF-8 abspeichern" die Version inkl. BOM verstehst. Dann kannst du doch keinen UTF-8-Header senden, wenn die Daten ANSI sind. Außerdem ist der Header wenig interessant, wichtiger ist die Definition im DocType, IIRC. Jedenfalls bei XHTML. HTML4 kenn ich dafür nicht gut genug.

Wenn du die Datei als UTF-8 speicherst (inkl. BOM), dann kann das natürlich nur so ein Editor verarbeiten, der das auch versteht. Windows Notepad z.B. Wenn du das ohne BOM speicherst, so dass PHP besser damit zurecht kommt, dann muss ein guter Editor natürlich raten, und wenn zu wenige Sonderzeichen vorkommen, wird er es u.U. falsch erkennne.

Fabchan 14.09.2004 20:00

Das sich der Validator auch nicht aufregt, wenn ich bei XHTML die Umlaute direkt in die Datei packe, ohne die Sonderzeichenkombinationen zu verwenden, mache ich das jetzt einfach so, habe die bisher immer umschrieben, weil ich immer dachte, das müsste ich so machen.

Naja, egal. Falls es irgendwem was bringt, kann ich die UTF-8-Unterstützung ja immer noch irgendwann mal integrieren, am besten in Version 5.0 oder so, bis dahin habe ich ja noch ordentlich Zeit!;)

Trotzdem vielen Dank für eure Mühe, mir zu helfen.

LonelyPixel 14.09.2004 22:03

Du kannst wahrscheinlich alle Zeichen verwenden, die du magst, solange du einen Zeichensatz angibst, in dem die auch vorkommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25