2016-07-01 6 views
0

Ich habe gerade gelernt, dass it's OK for a Unicode string to contain isolated combining characters.Richtige Behandlung von UTF8 Zeichenfolge Verkettung

Dies löst eine weitere Frage, relativ zur Verkettung von Strings beginnend mit solchen Zeichen.

Ich entwickle ein UTF8String Objekt, um die Handhabung von UTF-8-Strings zu vereinfachen.

Dieses Objekt verfügt über eine concat()-Methode, die eine andere Zeichenfolge mit der aktuellen verkettet.

Wenn die zweite Zeichenfolge mit einem Kombinationszeichen beginnt, sollte ich ein non-breaking Leerzeichen zwischen den zwei Zeichenfolgen hinzufügen, um zu vermeiden, das zuvor isolierte erste Zeichen der zweiten Zeichenfolge mit dem letzten Zeichen der ersten Zeichenfolge zu kombinieren ?

Oder wäre es zu erwarten, dass die Kombination auftritt?

+1

Wie erhalten Sie * Text * in einer Zeichenfolge in erster Linie zerlegt? Es gibt wahrscheinlich einen 'strLetter + strDiacritic'-Ausdruck irgendwo im Code, in diesem Fall ist es * nicht * korrekt, den NBSP hinzuzufügen. – dan04

+2

Es sollte möglich sein, eine Unicode-Zeichenfolge zu erstellen, indem Sie separate Basiszeichen kombinieren und Zeichen kombinieren. Ich wäre sehr überrascht von einer String-Klasse, die mir das nicht erlaubte. –

+3

Das Erraten der Intention der Bibliotheksbenutzer ist eine ziemlich schlechte Idee. Das zufällige Hinzufügen von Leerzeichen ist in 98% der Fälle falsch. Das Hinzufügen von ihnen kann in 2% der Fälle falsch sein, ist aber etwas, das der Bibliotheksbenutzer leicht selbst beheben kann. Vermeide es, dieses Rad neu zu erfinden, schau dir zumindest an, wie die Intensivstation es macht. –

Antwort

2

Ich entwickle ein UTF8String-Objekt, um die Handhabung von UTF-8-Strings zu vereinfachen. [...] sollte ich zwischen den beiden Strings ein nicht-brechendes Leerzeichen einfügen?

Ich würde definitiv nicht sagen. Die Behandlung von Byte-Kodierungen wie UTF-8 ist eine separate Angelegenheit auf niedrigerer Ebene als die Behandlung von Graphemgrenzen. Das Mischen der beiden Probleme wäre ein unerwarteter, unerwünschter Überlappungs-Verstoß.

Wenn Sie eine String-Klasse erstellen möchten, die Graphem-Cluster als unteilbare Einheiten behandelt, ist das in Ordnung, aber das ist ein anderes Tier (und es ist ziemlich viel Arbeit zu tun).