Wenn ich einen UTF-8-codierten Zeichen Array zu erstellen und den Zeiger auf einen String übergeben, wie dieseWas ist System :: String-Konstruktorcodierung?
char buffer[100];
CreateMyUTF8EncodedBytes(buffer, "some string with fancy characters like ö");
auto s = gcnew String(buffer);
das meiste davon ist richtig, aber die Nicht-ASCII-Zeichen werden durch Kauderwelsch ersetzt. Ich überprüfte die Pufferdaten doppelt, es ist tatsächlich korrekt, wenn ich den Puffer in ein verwaltetes Array umwandle und es an system :: text :: encoding :: utf8 :: getstring füttere, dann gibt es die korrekte Zeichenkette zurück.
Es ist auch nicht ASCII, wenn ich den Puffer mit einem const Char * Literal füllen, bekomme ich Nicht-ASCII-Werte für einige Zeichen und das Ergebnis ist korrekt.
Also offensichtlich was auch immer der String-Konstruktor zu verarbeiten versucht, ist es nicht UTF8 noch ASCII. Welche Codierung verwendet es? Kann ich es ändern?