Sicherstellung des ASCII Code bei Strings
-
Hallo,
wie stelle ich sicher,das bei einem String der korrekte Zeichensatz auch verwendet wird. Ich habe das Problem, dass ich bei der Ausgabe der Daten in eine Textdatei nur bestimmte Zeichensatztabellen verwenden darf.
Zu diesen Zeichensatztabellen gehören folgende Codes :
- 7-bit Code ( deutsche Referenzversion mit Umlauten )
- IBM Code,Zeichentabelle 437 (USA;english)
- ISO 8859-1 Code ( entspricht Latin -1 AFAIK )
die Daten werden in einer Variable von Typ CString bzw char[] gespeichert.
Ich weiss, dass es da eine Funktion gibt ( WideCharToMultiByte und MultiByteToWideChar). Ist das der einzigste Weg, oder kann man es auch anderes realisieren.
Bodo
-
Blubb?
Entweder du hast da etwas ganz und garnicht verstanden, oder aber ich verstehe deine Frage nicht.
Wenn du ein char[] hast, wie willst du rausbekommen in welcher Codepage es das zu interpretieren gilt?Wenn du also nicht die Codepage dazu weisst, dann kannst du das weder prüfen noch mit ausgeben. Wenn du es nicht mit ausgeben kannst, wie sollen andere Programme dann was damit anfangen können? -- die genannten Codepages sind ja nicht zueinander kompatibel.
Wenn du dagegen einen Unicode String vorliegen hast, dann kannst du natürlich prüfen ob der in einer der 3 Codepages (verlustfrei) darstellbar ist. Und dazu ist die einfachste mir bekannte Möglichkeit unter Windows WideCharToMultiByte.
-
Naja, obs echtes ASCII ist kann man schon feststellen. Einfach prüfen, ob der Zahlenwert für alle Buchstaben < 128 ist.
-
Nun ja, das ist simple. Ich lege einfach fest, das die Zeichenkonvertierung entweder im 7-Bit Code, IBM Code oder im ISO 8859-1 Code stattfindet.Wie gesagt, ich muss sicher stellen, dass die Daten die in Strings gespeichert sind dem ASCII Code entsprechen.
Das die drei Codepages nicht zueinander kompatibel sind, ist mir schon klar. Das Programm, welches dann diese Textdatei wieder einliest, erkennt am Dateinamen um welchen von den 3 Codepages es sich handelt.