Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Liste "aller" UniCode-Chars und der UnicodeCategory
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3358
Herkunft: Berlin

Themenstarter:

Liste "aller" UniCode-Chars und der UnicodeCategory

beantworten | zitieren | melden

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
Attachments
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3358
Herkunft: Berlin

Themenstarter:

beantworten | zitieren | melden

Zitat
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.
Zitat
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.
Zitat
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
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von juetho am .
Attachments
private Nachricht | Beiträge des Benutzers