Frage

Ich habe es geschafft, vor allem all diese Mehrbytezeichensatz Sachen zu ignorieren, aber jetzt brauche ich einige UI Arbeit zu tun, und ich weiß, dass meine Unwissenheit in diesem Bereich mit mir aufholen wird! Kann jemand in ein paar Absätze erklären oder weniger genau das, was ich wissen muss, damit ich meine Anwendungen lokalisieren können? Welche Arten sollte ich verwenden (ich benutze sowohl .Net und C / C ++, und ich brauche diese Antwort für Unix und Windows).

War es hilfreich?

Lösung

Sehen Sie sich Joel Spolsky das absolute Minimum Jeder Software-Entwickler absolut positiv wissen müssen über Unicode und Zeichensätze (Keine Entschuldigungen!)

EDIT 20140523 : Auch beobachten Zeichen, Symbole und die Unicode Miracle von Tom Scott auf YouTube - es ist knapp 10 Minuten, und eine wunderbare Erklärung der brillanten ‚hacken‘, dass UTF-8

ist

Andere Tipps

A Zeichencodierung besteht aus einer Folge von Codes, die jeweils ein Symbol aus einem gegebenen Zeichensatz nachzuschlagen. Bitte beachten Sie, diese guten Artikel über Wikipedia auf Zeichencodierung .

UTF8 (UCS) verwendet 1 bis 4 Byte für jedes Symbol. Wikipedia gibt einen guten Überblick darüber, wie das Multi-Byte-Rundown funktioniert:

  
      
  • Das signifikanteste Bit eines Single-Byte-Zeichen ist immer 0.
  •   
  • Die höchstwertigen Bits des ersten Bytes einer Multi-Byte-Sequenz   die Länge der Sequenz bestimmen.   Diese höchstwertigen Bits sind 110   für Zwei-Byte-Sequenzen; 1110   Drei-Byte-Sequenzen, und so weiter.
  •   
  • Die verbleibenden Bytes in einem Multi-Byte-Sequenz 10, wie ihre beiden   Bits.
  •   
  • Ein UTF-8-Stream enthält weder das Byte FE noch FF. Dies stellt sicher, dass ein   UTF-8-Stream sieht nie wie ein UTF-16   Streamen beginnend mit U + FEFF   (Byte-Reihenfolge-Marke)
  •   

Die Seite zeigt Ihnen auch einen großen Vergleich zwischen den Vor- und Nachteilen der einzelnen Zeichentyp aus.

UTF16 (UCS2)

Benötigt 2 Bytes auf 4 Byte für jedes Symbol.

UTF32 (UCS4)

verwendet 4 Bytes immer für jedes Symbol.

char bedeutet nur ein Byte von Daten und ist nicht eine tatsächliche Codierung. Es ist nicht analog zu UTF8 / UTF16 / ascii. Ein char * Zeiger kann auf jede Art von Daten beziehen und jede Codierung.

STL:

Sowohl stl des std :: wstring und std :: string sind nicht ausgelegt variabler Länge Zeichencodierungen wie UTF-8 und UTF-16.

Wie zu implementieren:

Werfen Sie einen Blick auf die iconv Bibliothek. iconv ist eine leistungsstarke Zeichencodierung Umwandlung Bibliothek von Projekten wie libxml (XML C-Parser von Gnome)

Andere große Ressourcen auf Zeichencodierung:

Empfangene Weisheit legt nahe, dass Spolsky Artikel Misses ein paar wichtige Punkte.

In diesem Artikel wird als vollständigere empfohlen: Die Unicode® Standard: A Technical Introduction

Dieser Artikel ist auch eine gute Einführung: Unicode Basics

Insbesondere Letzteres gibt einen Überblick über die Zeichenkodierung Formen und Systeme für Unicode.

Die verschiedenen UTF-Standards sind ways „Codepunkte“ zu codieren. Ein Codepunkt ist der Index in den Unicode charater Satz.

Eine andere Codierung ist UCS2 die durchweg 16bit ist und somit nicht die volle Unicode-Bereich unterstützt.

Gut zu wissen ist auch, dass man Codepunkt ist ein Zeichen, das nicht gleich. Zum Beispiel kann ein Zeichen wie beispielsweise eine sowohl als Codepunkt oder als zwei Codepunkte dargestellt werden, eine für die eine und einen für den Ring.

Vergleich von zwei Unicode-Strings so Normalisierung erfordert die kanonische Darstellung vor dem Vergleich zu erhalten.

Es gibt auch das Problem mit Schriftart. Es gibt zwei Möglichkeiten, Schriftarten zu behandeln. Entweder Sie verwenden eine gigantische Schrift mit Glyphen für alle Unicode-Zeichen, die Sie brauchen (ich glaube, den letzten Versionen von Windows kommt mit einem oder zwei solcher Schriften). Oder Sie verwenden som Bibliothek der Lage Glyphen aus verschiedenen Schriftart gewidmet Subsets der Unicode-Standards kombiniert werden.

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