C++: wie konvertieren von ASCII-oder ANSI in UTF8 und speichert Sie in std::string
Meiner Firma verwenden Sie code wie diesen:
std::string(CT2CA(some_CString)).c_str()
denen ich glaube, dass es konvertiert einen Unicode-string (deren Typ CString)in ANSI-Codierung, und diese Zeichenfolge ist für einen E-Mail-Betreff. Allerdings-header der E-Mail (zu dem Thema) zeigt an, dass die E-mail-client sollte Dekodieren als unicode (dies ist, wie der ursprüngliche code hat). So, einige Deutsche Zeichen wie "ä ö ü" nicht richtig angezeigt wie der Titel.
Gibt es trotzdem, dass ich dieses header auf UTF8 und speichern Sie in einem std::string und const char*?
Ich weiß, es gibt viel intelligentere Möglichkeiten, dies zu tun, aber ich brauche, um den code festhalten an seiner ursprünglichen (D. H. geschickt, der header als std::string und const char*).
Vielen Dank im Voraus.
- Sie werden wahrscheinlich wollen, std::wstring
- Es gibt keine vorgekocht Makros konvertieren zu utf8. Erstellen Sie einfach Ihre eigenen, rufen Sie WideCharToMultiByte() mit CP_UTF8.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Klingt das nach einer einfachen Konvertierung aus einer Kodierung, die eine andere Codierung nutzen: Sie können
std::codecvt<char, char, mbstate_t>
für diese. Ob Ihre Umsetzung wird mit einer geeigneten Umwandlung, ich weiß jedoch nicht. Von den Klängen der es, die Sie gerade versuchen, zu konvertieren ISO-Latin-1 in Unicode. Das dürfte so ziemlich trivial: die ersten 128 Zeichen anzeigen (0 bis 127) identisch mit UTF-8 und die zweite Hälfte in günstiger Zuordnung zur entsprechenden Unicode-code-points, d.h., Sie brauchen nur zu Kodieren, wird der entsprechende Wert in UTF-8. Jedes Zeichen wird ersetzt werden durch zwei Zeichen. Dass es, ich denke, die Umstellung ist etwas wie das:Becareful : es '|' und nicht '&' !