A few days ago, someone replied that if I had a C ++ 11 compiler, I could try the following:
#include <string> #include <codecvt> #include <locale> string utf8_to_string(const char *utf8str, const locale& loc) { // UTF-8 to wstring wstring_convert<codecvt_utf8<wchar_t>> wconv; wstring wstr = wconv.from_bytes(utf8str); // wstring to string vector<char> buf(wstr.size()); use_facet<ctype<wchar_t>>(loc).narrow(wstr.data(), wstr.data() + wstr.size(), '?', buf.data()); return string(buf.data(), buf.size()); } int main(int argc, char* argv[]) { string ansi; char utf8txt[] = {0xc3, 0xa1, 0}; // I guess you want to use Windows-1252 encoding... ansi = utf8_to_string(utf8txt, locale(".1252")); // Now do something with the string return 0; }
I don’t know what happened to the answer, apparently someone deleted it. But it turns out that this is the perfect solution. Whoever posted, thanks a lot and you deserve AC and upvote !!
source share