Umwandlung von erweiterten ascii zu utf 8
-
01-10-2019 - |
Frage
Wie konvertieren Sie eine std :: string codierte in erweiterten ascii zu utf8 Microsoft Visual Studio 2005?
Ich verwende Google Protokoll Puffer und es geht um nicht UTF8-Zeichen in meinem String beschweren, wenn ich gebe es ohne Umwandlung, das ist wahr ...
Lösung
Verwenden Sie MultiByteToWideChar konvertieren Sie Ihre String in UTF-16, dann verwenden Sie WideCharToMultiByte es in UTF-8 zu konvertieren.
Andere Tipps
Nehmen wir an, dass geheimnisvolle Exntended ASCII ist nur Latin1. Dann Maske aus wikipedia verwenden:
110y YYXX 10xx xxxx
Da Sie nur 00..FF haben, dann haben Sie:. 1100 00xx 10xx xxxx
wird Conversion Algorithmus folgend sein, wenn char-Code ist <127 dann Dump es einfach wie es ist, wenn es sich um> 127 dann Sie tun 0xC0 | ((x & 0xC0) >> 24)
zum ersten Byte geht, die zweite ist ((x & 0x3F) | 0x80)