Я пытаюсь выполнить очень простую задачу: взять wstring
с поддержкой юникода и преобразовать его в string
, закодированный в байтах UTF8, а затем наоборот: взять string
, содержащий UTF8байт и преобразовать его в Unicode-осознаваемый wstring
.
Проблема в том, что мне нужен кросс-платформенный и мне нужно, чтобы он работал с Boost ... и я просто не могу найти способсделай так, чтоб это работало.Я играл с
Пытаясь преобразовать код для использования stringstream
/ wstringstream
вместо файлов чего-либо, но, похоже, ничего не работает.
Например, в Python это выглядело бы так:
>>> u"שלום"
u'\u05e9\u05dc\u05d5\u05dd'
>>> u"שלום".encode("utf8")
'\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'
>>> '\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d'.decode("utf8")
u'\u05e9\u05dc\u05d5\u05dd'
Что я в конечном итоге получу, так это:
wchar_t uchars[] = {0x5e9, 0x5dc, 0x5d5, 0x5dd, 0};
wstring ws(uchars);
string s = encode_utf8(ws);
// s now holds "\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d"
wstring ws2 = decode_utf8(s);
// ws2 now holds {0x5e9, 0x5dc, 0x5d5, 0x5dd}
Я действительно не хочу добавлять другую зависимость от ICU или что-то в этом духе ... но, насколько я понимаю, это должно быть возможно с помощью Boost.
SomeПример кода будет принята с благодарностью!Спасибо