Wie kann ich einen Unicode-Pfad in einen c-String konvertieren?

8

Wie kann ich von einem Unicode-Pfadnamen (LPWSTR) in das ASCII-Äquivalent konvertieren? Die Bibliothek, die aufgerufen wird, versteht nur c-Strings.

Bearbeiten: Okay, ich habe die GetShortPathName- und die WideCharToMultiByte-Vorschläge genommen und diesen Codeabschnitt erstellt. Ich habe ihn mit einigen Ordnern getestet, die Unicode-Zeichen im Pfad enthalten, und es funktionierte einwandfrei:

%Vor%     
metafex 01.06.2010, 17:11
quelle

1 Antwort

5

GetShortPathName() Funktion

Ссылка

Gibt Ihnen einen äquivalenten 8.3-Dateinamen, der auf dieselbe Datei verweist, zur Verwendung mit Legacy-Code.

[EDIT] Dies ist wahrscheinlich das Beste, was Sie tun können, obwohl die 8.3-Dateinamen theoretisch je nach Registrierungseinstellung nicht-ASCII-Zeichen enthalten können. In diesem Fall haben Sie keine einfache Möglichkeit, das richtige char * zu erhalten, und GetShortPathNameA () wird dies auch nicht tun, wenn die Einstellung der Codepage während der Dateierstellung nicht mit der aktuellen Einstellung übereinstimmt.

Siehe Ссылка über die Einstellung. Es gibt hier einen Konsens (siehe unten), dass dieser Fall zu vernachlässigen ist.

Danke Moron, Alle, für den Beitrag zu diesem Beitrag.

    
Pavel Radzivilovsky 01.06.2010, 17:14
quelle

Tags und Links