Переход от расширенного ASCII в UTF8
-
01-10-2019 - |
Вопрос
Как конвертировать STD :: String, закодированную в расширенном ASCII в UTF8, используя Microsoft Visual Studio 2005?
Я использую буфер протокола Google, и он жалуется на NontF8 символов в моей строке, если я даю его без преобразования, что верно ...
Решение
Использовать Multibytetowidechar. Чтобы преобразовать вашу строку в UTF-16, затем используйте WideChartoMultibyte. Чтобы преобразовать его в UTF-8.
Другие советы
Давайте предположим, что таинственный assnated Ascii - это просто latin1. Затем используйте маску из Wikipedia:
110y yyxx 10xx xxxx
Так как у вас есть только 00..ff, тогда у вас есть: 1100 00xx 10xx xxxx
.
Алгоритм преобразования будет следовать, если Char Code является <127, а затем просто сбросить его как есть, если он> 127, то вы делаете 0xC0 | ((x & 0xC0) >> 24)
идет на первый байт, второй ((x & 0x3F) | 0x80)