2009-06-30 3 views
4

Ich arbeite an einem Projekt in VS2008, das ich in MBCS kompiliere, aber ich muss mit einigen UTF-8-Zeichenfolgen arbeiten, um mit einigen Webdiensten zu interagieren. Ich habe eine Funktion geschrieben, die perfekt mit Unicode aber nicht mit MBCS funktioniert. Gibt es eine Möglichkeit, eine MBCS-Zeichenfolge in UTF-8 oder Unicode zu konvertieren?MBCS zu UTF-8 C++

Danke!

Antwort

9

Konvertieren Sie die MBCS-Zeichenfolge in Unicode mit MultiByteToWideChar und dann in UTF-8 mit WideCharToMultiByte. Übergeben Sie CP_ACP an den ersten Anruf und CP_UTF8 an den zweiten Anruf.

+2

Ein guter Ratschlag im Allgemeinen, aber beachten Sie, dass die Angabe von CP_ACP das Verhalten von der Systemsprache der Maschine abhängig macht. Wenn es das ist, was er will, ist es in Ordnung. –

+0

Wenn Sie MBCS in Unicode konvertieren, müssen Sie wissen, auf welchem ​​MBCS welche Codepage verwendet wird, richtig? (BIG5, vereinfachtes Chinesisch ...) –

+0

@Yan Cheng CHEOK, ja. In den meisten Fällen befindet sich der Text jedoch auf der aktiven Codepage (der gesamte Text, den Sie aus der GUI abrufen, befindet sich beispielsweise auf dieser Codepage). – avakar