- vom Buchstaben den ASCII/ANSI Werte ausgeben lassen (z. B. beim Eurozeichen 128)
Das Eurozeichen steht im ASCII-Zeichensatz nicht auf 128, es existiert dort nicht einmal. Der ASCII-Zeichensatz enthält nur 128 Zeichen, von 0 bis 127.
Das, was Du da vor Dir hast, ist die Microsoft Codepage 1252. Es gibt _einen_ weiteren 8-Bit-Zeichensatz, der das Eurozeichen enthält, und zwar iso-8859-15 ("latin 9"), dort steht es auf Position 164, da die Zeichen um 128 für Steuerzeichen reserviert sind. iso-8859-15 ist ein Abkömmling von iso-8859-1 und bis auf das Eurozeichen und zwei oder drei weitere identisch.
Weiterhin sind fast alle weiter verbreiteten Zeichensätze in den ersten Positionen bis einschließlich 127 identisch mit ASCII.
Um der Vollständigkeit halber das Chaos perfekt zu machen, haben einige Schlaumeier iso-8859-1 genommen (von Haus aus kein Eurozeichen) und dort auf 128 das Eurozeichen eingefügt. Steht zwar in keinem Standard, hilft aber dafür über Probleme mit Leuten hinweg, die auf Windows schreiben, eigentlich CP1252 benutzen, ihre Sachen aber als iso-8859-1 ausgeben.
- Es scheint Zeichen zu geben, die im ASCII/ANSI Zeichensatz auf einem bestimmten dezimalen Wert zu finden sind, wird dieser aber in einen Hex-Wert umgewandelt stimmt das nicht mehr mit dem UNICODE-System überein.
Wie gesagt, Du hast kein ASCII und kein ANSI vor Dir, Du hast Microsoft CP 1252.
Wie finde ich heraus welche Zeichen (außer dem Euro) noch betroffen sind, ohne alle ANSI/ASCII Werte manuell durchzuprobieren?
Dafür gibt es keinen Automatismus, schau Dir einfach die Codetabellen an. Die Unicode-Tabellen findest Du unter http://www.unicode.org/charts/, ASCII-Tabelle und ihre ISO-Erweiterungen unter http://selfhtml.teamone.de/inter/zeichensaetze.htm, Microsofts CP1252 unter http://www.microsoft.com/globaldev/reference/sbcs/1252.htm.
Unicode Basic Latin 1 entspricht dabei (wie oben gesagt) ASCII, Latin 1 Supplement iso-8859-1.
- Was könnte ich machen, damit beim Konvertieren von dezimal in hex das Problem ausgeschlossen wird ? Ich also beim Eurozeichen hex 20AC bekomme, statt 0080...
Du brauchst eine Konvertierungstabelle CP1252 -> Unicode. Da Windows Unicode zumindest halbwegs vernünftig "spricht", gibt es möglicherweise sogar eine eingebaute Funktion dafür. Andernfalls hilft Dir vielleicht http://oss.software.ibm.com/icu/charset/ weiter.
Du solltest auch beachten, daß es verschiedene Arten gibt, Unicode-Zeichen zu speichern. Im Moment benutzt Du die 16-Bit-Variante, alle Unicode-Zeichen bekommst Du aber nur mit der 32-bittigen. Gut, Du hast nur 256 Zeichen umzusetzen, trotzdem solltest Du darauf achten, Deine Daten richtig und kompatibel zu speichern. Informiere Dich über utf-8, utf-16 und Co.
Gruß,
soenk.e