wide char, mbyte char, Unicode



  • zuhülfe schrieb:

    Wie macht man aus einem wide char array ein ansi char array?

    Meinst du mit Wide-Char wirklich Wide-Char oder doch Multi-Byte?
    Bei einem Wide-Char musst du einfach nur Wide-Char für Wide-Char durchgehen, alles was in ein char passt, größentechnisch, kannst du direkt in char Casten, alles andere kannst du nicht mit ansi darstellen und dafür ein Placeholder einfügen, z.B. ?
    Vorausgesetzt das Wide-Char Array enthält Zeichen in einem Zeichencode der den Ansi-Zeichensatz in die ersten 255 Zahlen mappt.



  • ok, dankeschön. 🙂

    Gibt es denn eine Funktion, die Ansi Strings in wide strings verpackt, oder muss man das selber machen?



  • Ganz einfach schrieb:

    ...alles was in ein char passt, größentechnisch, kannst du direkt in char Casten, alles andere kannst du nicht mit ansi darstellen..

    Ganz so einfach nicht.
    Was du beschreibst ist die ASCII, bei dem nur die Werte 0..127 belegt sind. Da gibt es also auch keine deutschen Umlaute.

    Mit "ANSI Code Pages" werden i.A. unter Windows Code Pages bezeichnet, die die Werte 128..255 mit sprach/regionsspezifischen Zeichen auffüllen. Will man also den Wide Char - string dahin umwandeln, muß man auch die Code Page mit angeben.

    Unter Windows kommt man mit WideCharToMultiByte und MultiByteToWideChar hin und her.

    code pages supported by windows
    mb2wc
    wc2mb

    klugscheißer schrieb:

    UTF-8 ist ja auch nicht dafür gemacht, sondern zur effizienten Speicherung.

    ... und indexbasierter Zugriff klappt auch bei UTF-16 nicht mehr 🙂


Anmelden zum Antworten