Erste herauszufinden, welche Arten von chars
hat Sie gehen zu sprechen.
In C
ein char
sind acht Bits, auch wenn Sie brauchen zwei oder mehr char
s in Folge eine Glyphe darstellen, oder in der Mensch-Bedingungen, ein eingegebene Zeichen. Es wird schlimmer, es gibt auch Glyphen, die zwei "typisierte" Zeichen darstellen, wie die zusammengehörenden Glyphen ff
und ll
, die man oft im Satz sieht.
Wenn Sie sprechen über C
char
s, dann enthält per Definition jede Datei die gleiche Anzahl von Zeichen wie Zeichen. Wenn Sie über eine andere Bedeutung des Wortzeichens sprechen, müssen Sie einige Entscheidungen treffen.
Für den ASCII-Zeichensatz in UTF-8, der bei weitem der beste verfügbare Zeichensatz ist, werden acht Bit-Zeichen garantiert, da er explizit in Webprotokollen unterstützt wird (danke w3c!). Das bedeutet, dass Sie, solange Sie überprüfen, dass jede java
char
in Ihrer Zeichenfolge ist weniger als 128 (Ganzzahl-Wert), erhalten Sie eine byte
pro char
mit UTF-8
.
ISO-8859-1
ist ein Zeichensatz, der auch nur einen byte
pro Zeichen verwendet.Der Nachteil ist, dass es ISO-8859-1
-nicht neigt andere als Microsoft-Systeme der Standardzeichensatz von irgendetwas sein. Sogar innerhalb des Microsoft-Bereichs hat UTF-8
eine Menge Fortschritte gemacht.
Die Kosten für die Konvertierung zwischen den beiden sind nicht übermäßig hoch, aber die Erweiterbarkeit der beiden unterscheiden sich drastisch. Wenn Sie ISO-8859-1
verwenden und Ihnen jemand sagt, dass das nächste Produkt die Sprache "X" unterstützen muss, müssen Sie in einigen Fällen zuerst in einen anderen Zeichensatz konvertieren und dann die Sprachunterstützung hinzufügen. Mit UTF-8
ist eine solche Notwendigkeit, vor dem Hinzufügen von Unterstützung in einen anderen Zeichensatz zu konvertieren, selten. Ich meine sehr selten, so selten, dass man nur Bilder in Betracht ziehen sollte, weil die Sprache wahrscheinlich tot ist, wahrscheinlich nur von historischem Interesse ist und wahrscheinlich als Dialekt von einem kleineren Stamm auf einer Insel, wo die primäre Sprache ist, dokumentiert worden ist hat volle Unterstützung.
Welche Codierung? ASCII? Was passiert, wenn ein 'char' nicht dargestellt werden kann? UTF-8? Was passiert wenn ein 'char' zwei Bytes ist? –