Frage

Fast vor 5 Jahren schrieb Joel Spolsky diesen Artikel, "Das absolute Minimum Jeder Software-Entwickler Absolut, positiv müssen über Unicode und Zeichensätze wissen (keine Ausreden!) ".

Wie viele andere, ich lese es sorgfältig, zu realisieren, war es höchste Zeit ich mit dieser „Ersatz für ASCII“ greift bekam. Leider, 5 Jahre später fühle mich, dass ich in diesem Bereich wieder in ein paar schlechten Gewohnheiten gerutscht. Haben Sie?

Ich schreibe nicht viele speziell internationale Anmeldungen, aber ich geholfen habe viel ASP.NET Internet Websites für bauen, so dass ich denke, das ist keine Entschuldigung.

So zu meinem Vorteil (und ich viele andere glauben) kann ich eine Eingabe von Menschen auf der folgenden erhalten:

  • Wie „verwinden“ ASCII ein für alle Mal
  • Grund Führung, wenn sie mit Unicode arbeiten.
  • Empfohlen (letzte) Bücher und Websites auf Unicode (für Entwickler).
  • Aktueller Stand der Unicode (5 Jahre nach Joels' -Artikel)
  • Future Richtungen.

Ich muss zugeben, dass ich ein .NET-Hintergrund haben und so auch Informationen über Unicode in dem .NET-Framework glücklich sein würde. Natürlich sollte dies allerdings nicht aus Kommentierung jeden mit einem unterschiedlichen Hintergrund stoppen.

Update:. Siehe diese Frage im Zusammenhang auch auf Stackoverflow vorher gefragt

War es hilfreich?

Lösung

Da ich den Joel Artikel und einige andere I18n Artikel las ich hatte immer ein wachsames Auge auf meine Zeichencodierung; Und es funktioniert tatsächlich, wenn Sie es consistantly tun. Wenn Sie in einem Unternehmen arbeiten, wo ist es Standard UTF-8 zu verwenden, und jeder weiß das / bedeutet dies, es wird funktionieren.

Hier einige interessante Artikel (außer Joels Artikel) zum Thema:

Ein Zitat aus dem ersten Artikel; Tipps zur Verwendung von Unicode:

  • Umfassen Unicode, nicht bekämpfen; es ist wahrscheinlich das Richtige zu tun, und wenn es nicht wäre, würde man wahrscheinlich sowieso haben.
  • Innerhalb der Software, speichert Text als UTF-8 oder UTF-16; das heißt, eines der beiden wählen, und bleiben Sie dabei.
  • Austausch von Daten mit der Außenwelt mit Hilfe von XML, wann immer möglich; dies macht eine ganze Reihe von möglichen Problemen geht weg.
  • Versuchen Sie, Ihre Anwendung Browser-basierte und nicht schreiben Sie Ihre eigene Client zu machen; der Browser ist wirklich sehr gut erhalten mit den Texten der Welt zu tun hat.
  • Wenn Sie mit jemandem anderer Code-Bibliothek (und natürlich Sie sind), übernimmt seine Unicode-Behandlung, bis bewiesen ist gebrochen richtig.
  • Wenn Sie Such tun, versuchen, die sprachlichen und Charakter-Probleme bei der Handhabung aus, jemanden zu übergeben, der sie versteht.
  • Auf Amazon oder irgendwo und kaufen Sie die neueste Version des gedruckten Unicode-Standard ab; es enthält ziemlich gut alles, was Sie wissen müssen.
  • Verbringen Sie einige Zeit um die Unicode-Website stoßen und zu lernen, wie der Code-Charts zu arbeiten.
  • Wenn Sie vorhaben, eine ernsthafte Arbeit mit asiatischen Sprachen zu tun zu haben, geht das O'Reilly Buch über das Thema von Ken Lunde kaufen.
  • Wenn Sie einen Macintosh haben, laufen und Herr Pixel Unicode Font Inspection Tool greifen. Total cool.
  • Wenn Sie wirklich mit den Daten zu haben, und schmutzig zu erhalten, gehen Sie eine der zweimal pro Jahr Unicode Konferenzen teilnehmen. Alle Experten gehen, und wenn Sie nicht wissen, was Sie wissen müssen, werden Sie in der Lage sein, jemanden dort zu finden, wer weiß.

Andere Tipps

verbrachte ich eine Weile mit Suchmaschinen-Software arbeiten - Sie würden nicht glauben, wie viele Web-Seiten Inhalt mit HTTP-Header oder Meta-Tags dienen bis die über die Kodierung der Seiten liegen. Oft werden Sie auch ein Dokument erhalten, die sowohl ISO-8859-Zeichen und UTF-8-Zeichen enthält.

Wenn Sie durch ein paar diese Art von Fragen gekämpft haben, starten Sie die richtige Zeichencodierung von Daten nehmen Sie wirklich ernst zu produzieren.

Das .NET Framework verwendet die Windows-Standard-Kodierung für die Speicherung von Zeichenketten, die UTF-16 erweist. Wenn Sie nicht über eine Codierung angeben, wenn Sie die meisten Text-E / A-Klassen verwenden, werden Sie UTF-8 ohne BOM schreiben und zu lesen, indem zunächst für eine BOM prüft dann UTF-8 unter der Annahme, (ich weiß sicher, StreamReader und StreamWriter diese verhalten Hier entlang.) ist ziemlich sicher für die „dumme“ Text-Editoren, die keine BOM verstehen, sondern Art von cruddy für intelligentere diejenigen, die UTF-8 oder die Situation angezeigt werden könnte, wo Sie tatsächlich Zeichen außerhalb des Standard-ASCII-Bereichs zu schreiben.

Normalerweise ist dies unsichtbar, aber es kann seinen Kopf auf interessante Weise hinten. Gestern habe ich mit jemandem gearbeitet, die ein Objekt in eine Zeichenfolge serialisiert eines StringWriter XML-Serialisierung wurde mit verwenden und er kann nicht herausfinden, warum die Codierung immer UTF-16 war. Da eine Zeichenfolge im Speicher UTF-16 sein wird und dass von .NET erzwungen wird, das ist das einzige, was der XML-Serialisierung Rahmen tun könnte.

Also, wenn ich etwas zu schreiben, die nicht nur ein Wegwerf-Werkzeug ist, definiere ich eine UTF-8-Codierung mit einer Stückliste. Technisch in .NET finden Sie immer versehentlich Unicode bewusst, aber nur, wenn Ihr Benutzer weiß, Ihre Codierung als UTF-8.

erkennen

Es macht mich ein wenig weinen jedes Mal, wenn ich sehe, dass jemand fragen: „Wie bekomme ich die Bytes eines Strings?“ und die vorgeschlagene Lösung nutzt Encoding.ASCII.GetBytes(): (

Als Faustregel gilt:. Wenn Sie noch nie in einem String munge oder schauen und stattdessen behandeln streng als Blob von Daten, werden Sie viel besser dran

Selbst etwas so Einfaches wie Splitting Wörter tun oder Strings Kleinschreibung wird hart, wenn Sie es „die Unicode-Weg“ machen wollen.

Und wenn Sie es „der Unicode-Weg“ tun mögen, müssen Sie eine schrecklich gute Bibliothek benötigen. Dieses Zeug ist unglaublich komplex.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top