Gibt es eine Möglichkeit in Java, dass ich alle Unicode-Zeichen einer bestimmten Sprache (zum Beispiel Bengali oder Arabisch) erhalten kann?
Die Klasse java.lang.Character hat eine innere statische Klasse namens UnicodeBlock. So können Sie beispielsweise den arabischen Unicode-Block erhalten:
%Vor%Durch die Iteration über alle Zeichen (genauer gesagt, Unicode-Codepunkte) ist es möglich, jedes zu überprüfen, um seinen Unicode-Block zu finden:
%Vor%Bis 1.7 unterstützt Java keine Skripte in Unicode. Java unterstützt jedoch sehr unklare Unicode-Eigenschaften. Es steckt im Grunde genommen in der Inkarnation von Unicode. Dies ist ein echtes Problem. Sie behaupten, dass sie mit JDK7 Unicode 6 erreichen werden, aber ich habe noch keine Beweise gesehen, dass sie eine angemessene Eigenschaftsunterstützung haben werden.
In Unicode 6.0 gibt es 1.051 Codepunkte, die insgesamt als Arabisch gelten, mit 1.020 in der Basic Multilingual Plane:
%Vor% Der Grund dafür ist, dass das Programm unichars
in Perl geschrieben ist und Perl immer ausgezeichnete Unicode-Eigenschaften unterstützt hat. Ich führe das gegen Unicode 6.0; In früheren Versionen von Unicode gab es etwas weniger. Tatsächlich wurden 17 neue arabische Zeichen für Unicode 6.0 hinzugefügt:
Sie können einfach nicht versuchen, Blöcke dafür zu verwenden. Skripte unterscheiden sich von Blöcken. Nicht alle Codepunkte in einem bestimmten Block sind vom selben Skript. Genauso wichtig ist, dass Sie oft Buchstaben eines bestimmten Skripts in seltsamen Blöcken verstreut finden.
Zum Beispiel gibt es im griechischen Block 18 nicht-griechische Zeichen:
%Vor%Und 13 nicht arabische Zeichen im arabischen Block:
%Vor%Außerdem gibt es 4 griechische Blöcke und 4 (oder 5) arabische:
%Vor% \p{Block:Greek}
und \p{Greek_and_Coptic}
sind Aliase, aber der Rest ist alles verschieden.
Aber selbst wenn du dir all diese Blöcke anschaust, wirst du einige verpassen. Zum Beispiel:
%Vor%Sehen Sie das Problem?
Übrigens verwenden Sie uniprops
für mehr als nur das Auflisten aller möglichen Eigenschaften. Es kann Ihnen auch die Eigenschaften eines gegebenen Codepunkts geben:
Wenn Sie sie nützlich finden, können Sie die Quelle für uniprops und
Auch wenn einige dieser Eigenschaften in Java noch nicht direkt verfügbar sind, ist es in Ordnung, Perl zu verwenden, um Java-Code zu generieren, wenn Sie möchten; Ich mache es die ganze Zeit selbst. :)
Tags und Links java unicode character-properties