Hallo,
ich habe für mich eine Übersicht erstellt, welches Unicode-Zeichen zu welcher Kategorie gehört. Muster:
Let = Letter
Dig = Digit
Sym = Symbol
Pun = Punctuation
Sep = Separator
WSp = WhiteSpace
Sur = Surrogate
Ctl = Control
Num Hex Let Dig Sym Pun Sep WSp Sur Ctl
-- ---- ---- --- --- --- --- --- --- --- ---
0032 0020 x x
! 0033 0021 x
" 0034 0022 x
# 0035 0023 x
$ 0036 0024 x
% 0037 0025 x
0 0048 0030 x
1 0049 0031 x
2 0050 0032 x
: 0058 003A x
; 0059 003B x
< 0060 003C x
= 0061 003D x
> 0062 003E x
? 0063 003F x
@ 0064 0040 x
A 0065 0041 x
B 0066 0042 x
Ich könnte mir vorstellen, dass eine solche Liste von allgemeinem Interesse ist (auch international). Sollte ich sie bei CodeProject veröffentlichen, oder habt Ihr andere Vorschläge? Ich kann sie auch auf meiner eigenen Homepage zur Verfügung stellen.
Die gesamte Textdatei ist 2.873.038 Bytes groß, als Zip-Datei 464.574 Bytes. Ich habe sie jetzt aufgeteilt:*Anhang in diesem Post: CharTypes1.Txt von 0x0020 bis 0x7FFF mit 1.461.504 Bytes und Quelltext *Anhang in meinem nächsten Post: CharTypes2.Txt von 0x8000 bis 0xFFFF mit 1.411.666 Bytes
Auslöser für diese Liste war übrigens die Unklarheit, was Unicode unter Symbol und was unter Punctuation versteht; das ist mir jetzt erst recht nicht klar.
Jürgen
//Edit: Liste von 0x7FFE auf 0xFFFF verlängert.
//Edit: Download hinzugefügt, Erläuterung angepasst
Hallo juetho,
eine Frage danach wurde zwar meines Wissens noch nicht gestellt und daher schätze ich den Bedarf als eher gering, aber da die Zip-Datei klein genug ist, kannst du sie einfach an deinen Beitrag als Dateianhang anhängen. Dann sieht man auch gleich wie oft die Datei heruntergeladen wird.
Vielleicht kannst du auch den Quelltext des Programms posten, mit dem du die Liste erstellt hast.
herbivore
Original von herbivore
eine Frage danach wurde zwar meines Wissens noch nicht gestellt und daher schätze ich den Bedarf als eher gering,
Sehe ich eigentlich auch so, aber wenn ich die Tabelle schon habe, ist es nützlich, wenn sie nur einem anderen hilft.
aber da die Zip-Datei klein genug ist, kannst du sie einfach an deinen Beitrag als Dateianhang anhängen.
OK, wird im ersten Beitrag und hier angefügt.
Vielleicht kannst du auch den Quelltext des Programms posten, mit dem du die Liste erstellt hast.
Bitte schön (der vollständige Quelltext ist im Download enthalten; Befehle, die nur zur Verschönerung dienen, habe ich hier gestrichen):
public static void Main(string[] args)
{
bool Letter, Digit, Symbol, Punctuation, Separator, WhiteSpace,
Surrogate, Control;
int i0;
for (char c0 = ' '; c0 <= Char.MaxValue; ) {
// normale Werte prüfen
i0 = (int)c0;
Letter = Char.IsLetter(c0);
Digit = Char.IsDigit(c0);
Symbol = Char.IsSymbol(c0);
Punctuation = Char.IsPunctuation(c0);
Separator = Char.IsSeparator(c0);
WhiteSpace = Char.IsWhiteSpace(c0);
Surrogate = Char.IsSurrogate(c0);
Control = Char.IsControl(c0);
// einzelne Zeile übertragen
if (Letter || Digit || Symbol || Punctuation || Separator
|| WhiteSpace || Surrogate || Control)
charTypes.Add( String.Format(
"{0}\t{1:D4}\t{2:X4}\t {3}\t {4}\t {5}\t {6}\t {7}\t {8}\t {9}\t {10}",
Control ? ' ' : c0, i0, i0,
Letter ? 'x' : ' ',
Digit ? 'x' : ' ',
Symbol ? 'x' : ' ',
Punctuation ? 'x' : ' ',
Separator ? 'x' : ' ',
WhiteSpace ? 'x' : ' ',
Surrogate ? 'x' : ' ',
Control ? 'x' : ' ') );
else
// ungewöhnliche Sonderfälle im Klartext anzeigen
charTypes.Add( String.Format(
"{0}\t{1:D4}\t{2:X4}\t {3}",
Control ? ' ' : c0, i0, i0,
Char.GetUnicodeCategory(c0).ToString() ));
if (c0 == Char.MaxValue)
break;
}
// Abschluss: charTypes in string[] umkopieren, dann speichern
string[] charListe = new string[charTypes.Count];
for(int x0 = 0; x0 < charTypes.Count; x0++) {
charListe[x0] = charTypes[x0];
}
System.IO.File.WriteAllLines("CharTypes.Txt", charListe, System.Text.Encoding.UTF8);
}
Gruß Jürgen
//Edit: Teil 2 der Liste angehängt