Frage

Das ist mehr eine Frage MBCS als eine Unicode-Frage. Ich brauche eine API zu erstellen, die eine Liste von Strukturen gibt, dass jede Instanz ein Unicode-Zeichen als eines seiner Mitglieder hält. Dies ist in .NET, so dass Sie denken, würde ich UTF-16 wollen würde, aber dann für asiatische Schriftzeichen, würde es zwei Zeichen erforderlich mögen werden. Was ist die beste Praxis, wenn Unicode-Zeichen der Rückkehr?

  1. Verwenden Sie ein Array von 2 UTF-16 Zeichen - Testen Sie die ersten Zeichen zu sehen, ob es der Leihmutter, eine Zählung haben?
  2. Ignorieren Sie die Surrogat Ausgabe und überlässt es den Anrufer, um herauszufinden, die tatsächlichen Glyphe Spannweiten structs kodiert?
  3. Verwenden Sie eine Zeichenfolge statt, damit ich nicht egal, ob es ein oder zwei Zeichen lang?
  4. Verwenden Sie UTF-32

Was tun die Menschen normalerweise für UTF-8? Ich schätze, dass sie nie mit dem einzelnen Charakteren umgehen und alles ist in einem String (beispielsweise in einem String für ein Zeichen der Suche wirklich von der Suche nach einem Unterkette erfolgt) gehalten. es ist die C ++ Programmierer in mir Vielleicht aber ein String scheint so plump.

Ich glaube, ich werde 3 # tun. Was haben andere getan?

War es hilfreich?

Lösung

Sie haben Recht, über Strings. In Unicode, denn selbst könnte ein einzelnes Zeichen mehrere Codepunkte erfordern (die jeweils eine bestimmte Anzahl von Bytes dauern würde, auf der Codierung abhängig), kann man nicht wirklich jemals Arbeit auf etwas weniger als Strings. Auch Funktionen wie isUpper oder eine solche Zeichenfolge und nur die Arbeit an dem ersten Element davon nehmen sollte.

Der Grund, ein Zeichen möglicherweise mehrere Codepunkte erfordern in der Regel wegen der Kombination von Zeichen, für Akzente und so weiter.

Sehen Sie diese Frage im Unicode FAQ .

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