Unicode und utf

Hallo zusammen,

ich habe mal folgende Frage, da ich das nicht wirklich ganz nachvollziehen kann. OK, ich bin ja ned blöde. Verstehen tu ich es, aber irgendwie…Naja, egal. Mein Problem.

Unicode ist ein Zeichensatz, der versucht mit einer Breite von 32Bit alle Zeichen dieser Welt aus allen Sprachen aufzunehmen und in einem Code zur Verfügung zu stellen. ACII kann ja nur 128 bzw 256(Ansi). ABER, wofür ist UTF gut? Ich verstehe nicht ganz, warum für einen Code, in diesem Falle Unicode, noch eine „Abbildungssprache, Methodik oder dergleichen“ genutzt wird um Unicode dann auf ein Bitmuster abzubilden. Das macht doch Unicode schon, oder? Ich bin an dieser Stelle ein wenig verwirrt. Wikipedia war zwar ganz hilfreich, ich blick den Sinn aber dennoch nicht ganz. bie ASCII z.B. hab ich ja auch den ASCII Code und nicht noch eine „Abbildungsmethodik“ darüber.

Wäre nett, wenn mich da jemand „erleuchten“ könnte :smile:

Gruss
Marcel

hi Marcel

unicode ist eine sammlung an standards, wie verschiedene zeichen binär abgebildet werden. utf ist eine teilmenge dieser standards, utf-8 ist z.b. eine spezielle ausprägung.

bei unicode gibt es mehrere verschiedene codierungstechniken - je nachdem, welche zeichen man häufiger braucht, wird man sich den jeweiligen standard hernehmen. beispiele:

der im java verwendete unicode-satz verwendet fix zwei byte (16 bit) zur darstellung von zeichen und kann damit die wichtigsten zeichensätze, die zur zeit verwendet werden, abbilden. es fehlen allerdings etliche zeichen v.a. aus dem asiatischen raum.

vorteil: einheitlicher zeichensatz, der „im westen“ praktisch alles abdeckt, was so im normalen geschäftsleben an zeichen daherkommt.
nachteil: man benötigt immer 2 byte pro zeichen, d.h. textdateien werden beim umstieg auf diesen code automatisch doppelt so gross.

utf-8 ist eine „optimierung“ vor allem für systeme, die „im westen“ laufen. hintergrund ist, dass die ersten 127 zeichen des 16-bit-unicode-satzes dem ansi-zeichensatz entspricht. man definiert also einen zeichensatz mit variabler bitlänge. die längen können 8, 16, 24 und 32 bit sein (also immer volle byte). wie viele bytes kommen, erkennt das system aufgrund der ersten bits des jeweiligen ersten bytes (also eigentlich das 8. bit - oder besser gesagt, das äusserst linke). ist das erste bit „0“, so weiss das system, dass das zeichen ein ein-byte-zeichen ist und dem ansi-code entspricht. beginn das erste byte mit „110“, so weiss das system, dass noch ein weiters byte folgt. bei „1110“ folgen zwei bytes usw. die folgebytes beginnen immer mit „10“.

vorteil: hantiert man viel mit texten, die hauptsächlich aus ansi-zeichen bestehen, braucht man weniger platz als für 16-bit-unicode (im optimalfall genau die hälfte). nur für seltener benötigte zeichen braucht man mehr bytes.
nachteil: textfelder brauchen je nach verwendeten zeichen unterschiedlich viel speicherplatz. ein feld, dass max. 10 zeichen aufnimmt, braucht zwischen 10 und 40 byte speicher (16-bit-unicode braucht immer 20 byte). ist z.b. blöd, wenn man platz für 100 zeichen reserviern muss und zum programmierzeitpunkt nicht wiess, wieviel speicher tatsächlich gebraucht werden.

utf-8 hat sich desshalb in unserem bereich durchgesetzt, da die meisten anwendungen tatsächlich mit ansi-zeichen auskommen. selbst in der deutschen sprache sind umlaute nicht so häufig (brauchen 2 bytes), als dass sich der 16-bit-unicode auszahlen würde. wenn man nun viel mit textdateien hantiert, ist die speicherplatzersparnis doch enorm (bis zu 50 % eben).

im asiatischen raum wird niemand, der halbwegs alle tassen im schrank hat, freiwillig auf utf-8 umsteigen.

alles klar?

erwin

Erwin,

ich könnte dich knutschen :smile: Danke vielmals für deinen so ausführlichen Artikel; Ein Lichtfunke am Computerhimmel :smile:

Gruß
Marcel

hi Marcel

bevor du mich zu überschwänglich lobpreist: meine vorige erklärung war natürlich bewusst einfach gehalten und entspricht nicht 100%ig den tatsachen - reicht aber für den hausgebrauch.

die einzig glückseligmachende webseite ist natürlich:

http://www.unicode.org

dort gibt es auch ein ganz gutes faq, in dem die wichtigsten fragen beantwortet werden. hier wird auch erklärt, was utf wirklich ist - mit all den spielarten etc.

http://www.unicode.org/faq/utf_bom.html#37

wenn du aber nur pc-anwender bist und keine eigenen unicode-converter schreiben musst, reicht meine ursprüngliche info aber voll aus…

erwin