# char Zeichensatz?



## hdi (15. Jul 2010)

Hey,

hab wie ihr vllt merkt grad wieder ne "Klärungsbedarf" Session am Start 

Hier geht's um den Zeichensatz von char.
Ich kenne char natürlich und weiss auch es ist intern ein int.

Ich kenne auch die ASCII Tabelle.

Aber was ich noch nie so wirklich kapiert hab:
char ist ja UTF-16 Zeichensatz, und das sind 65.535 Zeichen.

Ich find aber keine vollständige Tabelle dazu.

zB was ist char c = 23521; 

Hat jmd ne vollständige Tabelle für mich? Oder hängt das irgendwie auch vom 
Betriebssystem ab? DAnke!


----------



## madboy (15. Jul 2010)

Ich habe zwar keine vollständige Tabelle anzubieten, aber warum gibst du dir nicht eine aus? Kleine for-Schleife von 1-65k sollte reichen (wenn der Zeichensatz deines Betriebssystems auch alle Zeichen anzeigen kann, was ich bezweifle...)


----------



## hdi (15. Jul 2010)

Ok das hängt also vom OS ab?

Kann man sagen dass die einzig wirklich sinnvollen Zeichen die aus der ASCII Tabelle sind?

Ich frag mich dann wofür man char eig hernimmt für die restlichen 95% Zeichen?

Ich meine bei Streams nimmt man ja eher byte.

Verstehe nich ganz was das soll dass der Wertebereich davon so "groß" ist.


----------



## madboy (15. Jul 2010)

Der Zeichensatz hat erst mal nix damit zu tun, ob das Zeichen auch dargestellt, also gezeichnet werden kann. Außerdem gibt's noch ein paar Steuerzeichen (ASCII 7 ist glaube ich ein beep vom Systemlautsprecher).

Ansonsten würde ich dich ins allwissende Netz verweisen, da gibt's bestimmt gute Erklärungen 

EDIT: ob ein Zeichen auch gezeichnet, also dargestellt werden kann hängt von der verwendeten Schriftart ab. Kann etwas nicht dargestellt werden, erhälst du lustige Quadrate oder ähnliches.


----------



## Pulma (15. Jul 2010)

hdi hat gesagt.:


> Hat jmd ne vollständige Tabelle für mich?



Wieso nicht?
--> Unicode/UTF-8-character table
Lass dich von den Namen des Links nicht irriteren... UTF16 bildet Unicode ab und dieser wird in dem Link dargestellt


----------



## Wortraum (15. Jul 2010)

hdi hat gesagt.:


> Aber was ich noch nie so wirklich kapiert hab:
> char ist ja UTF-16 Zeichensatz, und das sind 65.535 Zeichen.


Nein, Java unterstützt Unicode 4.0, und das sind über 100.000 Zeichen; der letzte gültige Code‐Point liegt bei 0x10FFFF, was irgend etwas über 1.000.000 ist. Aber Du hast recht damit, daß sich mit 16 Bits nur 65.536 Zeichen darstellen lassen. Die Bezeichnung _char_ ist daher verwirrend, denn für ein Zeichen mit einem Code‐Point über 65.535 benötigt man zwei Chars.

*> Ich find aber keine vollständige Tabelle dazu.*

Einfach beim Unicode‐Standard schauen, wo logischerweise alles definiert ist:
Code Charts

Ich verwende am liebsten diese Seite:
Die Unicode-Datenbank: Character geordnet nach Block, Kategorie, Bidi und sonstigen Eigenschaften

Und diese sind ebenfalls nicht schlecht:
decodeunicode.org . Last Entries
Unicode/UTF-8-Zeichentabelle

*> Oder hängt das irgendwie auch vom Betriebssystem ab?*

Nein, natürlich nicht. Unicode ist Unicode, und wenn es überall anders wäre, wäre es kaum ein Standard und nicht zu gebrauchen. Schlimm genug, daß Java ein modifiziertes UTF-8 verwendet.

*Kann man sagen dass die einzig wirklich sinnvollen Zeichen die aus der ASCII Tabelle sind?*
Umlaute und das Eszett sehe ich nicht als sinnlos an; für andere Sprachen, beispielsweise Esperanto, sind es ĝ oder ĥ oder Ĵ. Wer nicht wie zu Schreibmaschinenzeiten ein Minus verwenden will für einen Bindestrich oder einen Gedankenstrich, zwei Hochstriche für Anführungszeichen oder drei Punkte für ein Auslassungszeichen, der wird sich auch mit Unicode angefreundet haben. Und ob chemische, mathematische Zeichen und Zahlen, musikalische Symbole, ein Dutzend verschiedener Leerzeichen für Zahlen, Formeln und Texte, Bindestriche ohne Umbruch, grafische Elemente wie Boxen: alles hat einen hübschen Platz in Unicode gefunden.


----------



## KrokoDiehl (16. Jul 2010)

Ich finde das eine gute Antwort von _Wortraum_!


----------



## hdi (16. Jul 2010)

Jup sehe ich auch so! Danke


----------

