2009-12-12 9 views
47

Was sollte wann verwendet werden? oder ist es immer besser UTF-8 immer zu verwenden? oder ISO-8859-1 hat unter bestimmten Bedingungen immer noch Bedeutung?ISO-8859-1 vs UTF-8?

Ist der Zeichensatz auf die geografische Region bezogen?


Edit:

Gibt es irgendeinen Nutzen Sie diesen Code @charset "utf-8";

oder ähnliche <link type="text/css; charset=utf-8" rel="stylesheet" href=".." />

an der Spitze der CSS-Datei zu setzen?

fand ich für diesen

Wenn Dreamweaver den Tag hinzufügt, wenn Sie eingebetteten Stil zum Dokument hinzufügen , , die ein Fehler in Dreamweaver ist. Vom W3C FAQ: „Für Stil Erklärungen eingebettet in einem Dokument, @charset Regeln sind nicht benötigt, und nicht verwendet werden müssen“

Die charset-Spezifikation ist ein Teil des CSS seit Version 2.0 (Mai 1998), so , wenn Sie eine charset Spezifikation in eine CSS-Datei und Safari haben kann nicht damit umgehen, , die ein Fehler in Safari ist.

und fügen accept-charset in Form

<form action="/action" method="post" accept-charset="utf-8"> 

und was nützlich sein sollte, wenn ich xhtml doctype

<?xml version="1.0" encoding="UTF-8"?> 

oder

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 

Antwort

55

Unicode übernimmt und übertrifft bereits alle anderen. Ich schlage vor, dass Sie jetzt in den Zug steigen.

Beachten Sie, dass es mehrere Varianten von Unicode gibt. Joel Spolsky gives an overview.

Unicode is winning (Graph aktuelle Stand Feb. 2012, siehe unten für genauere Werte kommentieren.)

+9

Der Großteil des Webs ist nun UTF-8: http://w3techs.com/technologies/overview/character_encoding/all – dan04

+3

Um ganz klar zu sein, was mit "Unicode-Varianten" gemeint ist, ist, dass es verschiedene Wege gibt um Unicode zu kodieren. – Peter

+0

Danke für den Link zu dem prägnantesten und treffendsten Artikel, den ich seit einiger Zeit gesehen habe. –

7

UTF-8 verwenden wird überall im Web unterstützt. Nur in bestimmten Anwendungen ist es nicht. Sie sollten immer utf-8 verwenden, wenn Sie können.

Der Nachteil ist, dass für Sprachen wie Chinesisch, UTF-8 mehr Platz braucht als, sagen wir, utf-16. Aber wenn du nicht vorhast chinesisch zu gehen, oder wenn du chinesisch wirst, dann ist utf-8 in Ordnung.

Die einzigen Nachteile der Verwendung von utf-8 ist, dass es im Vergleich zu verschiedenen Codierungen mehr Platz benötigt, aber im Vergleich zu westlichen Sprachen braucht es fast keinen zusätzlichen Platz, außer für sehr spezielle Zeichen und zusätzliche Bytes mit. Wir sind schließlich 2009. ;)

+1

Genau genommen ist das nicht die einzige Con. Eine andere Konsequenz ist, dass es eine Codierung mit variabler Länge ist und einige alter Code immer noch über diese Tatsache stolpert. –

+0

Ja, aber wie gesagt, ich spreche über utf-8 im Web und nicht im Programmieren. ;) –

+0

@Joachin Sauer, entweder unterstützt du die Codierung oder du nicht. Ja, alles ASCII ist gültig UTF-8, aber warum sollte man UTF-8 mit einem ASCII-Decoder erfolgreich dekodieren? – Peter

3

Wenn Sie Weltherrschaft, verwenden UTF-8 den ganzen Weg, weil diese alle menschlichen Charakter verfügbar auf der Welt, darunter auch asiatische, kyrillische, Hebräisch, Arabisch, Griechisch und so weiter bedeckt, während ISO-8859 nur eingeschränkt zu lateinischen Zeichen. Sie möchten Mojibake nicht haben.

+0

aber wenn ein Zeichen nicht in UTF-8 in der Website angezeigt wird, dann sollte ich Charset UTF-8 zu ISO-8859 für nur ein Zeichen ändern oder gibt es eine andere Lösung? –

+1

@BalusC, eigentlich musst du zu UTF-16 gehen, um "jeden verfügbaren menschlichen Charakter der Welt" abdecken zu können. –

+0

@Rob Wells - Also sollten wir UTF-16 verwenden? –

-1
  • ISO-8859-1 eine große Codierung zu verwenden ist, wenn der Platz eine Prämie ist, und Sie sind immer nur Ich möchte Zeichen aus den grundlegenden lateinischen Sprachen codieren, die es unterstützt. Und Sie werden niemals jemals darüber nachdenken müssen, Ihre Anwendung zu aktualisieren, um nicht-lateinische Sprachen zu unterstützen.

  • utf8 ist eine fantastische Möglichkeit, (a) die große Codebasis von 8 Bits pro Zeichencode-Bibliotheken zu verwenden, die es bereits gibt, oder (b) ein Euro-Snob zu sein. utf8 kodiert Standard ASCII in 1 Byte pro Zeichen, Latein 1 in 2 Bytes pro Zeichen, Osteuropäische und Asiatische Sprachen erhalten 3 Bytes pro Zeichen. Es geht möglicherweise bis zu 4 Bytes pro Zeichen, wenn Sie versuchen, alte Sprachen zu kodieren, die nicht in der mehrsprachigen Grundebene vorhanden sind.

  • utf16 ist ein guter Weg, um eine neue Codebasis von Grund auf neu zu starten. Es ist völlig kulturneutral - jeder erhält fairerweise 2 Bytes pro Zeichen. Es braucht 4 Bytes pro Zeichen für alte/exotische Sprachen - was bedeutet, dass es im schlimmsten Fall so schlimm ist wie sein großer Bruder:

  • utf32 ist eine Verschwendung von Platz.

+2

utf16 ist * kulturneutral *? Jeder bekommt ein * fair-handed 2 Bytes *? Anstatt kulturelle Werturteile in die Diskussion einzubetten, warum sollte man nicht eine prägnante Kosten-Nutzen-Analyse machen? Um es so auszudrücken: Wenn die codierten Zeichen hauptsächlich ASCII oder Latein sind, ist UTF16 Platzverschwendung. Wenn nicht, dann nicht. Ob es sich um eine "neue Codebasis" handelt, ist irrelevant. – Cheeso

+0

utf16 hat den Vorteil, dass Sie einen Cursor rückwärts bewegen können. Sollte nicht vernachlässigt werden. – nes1983

+0

utf-16 ist eine sehr schlechte Web-Kodierung, weil sie extrem inkompatibel zu jeder anderen Kodierung ist, und wenn es einen Fehler im Byte-Strom gibt, wird dies nicht registriert und läuft weiter, als ob nichts passiert wäre, was jedes nachfolgende Zeichen verursacht falsch liegen. Selbst ein fehlendes Bit tut das. –

0

Ich finde iso-8859-1 sehr nützlich auf ein paar Stellen, an denen ich Kunden schicken ich haben Textdateien, die in Word oder Publisher erstellt wurden, dass ich einfach in die Mitte von PHP-Code einfügen kann und nicht Sorgen Sie sich darum - vor allem, wenn es um Zitate geht. Das sind lokale Unternehmen in den USA, es gibt buchstäblich keinen anderen Unterschied im Text auf den Seiten, und ich sehe keinen Nachteil darin, diesen Zeichensatz auf diesen bestimmten Seiten zu verwenden. Alle anderen sind UTF-8.