Преобразование из расширенного ASCII в UTF8 - PullRequest
1 голос
/ 09 сентября 2010

Как преобразовать std :: string, закодированную в расширенном ascii, в utf8 с помощью Microsoft Visual Studio 2005?

Я использую буфер протокола Google, и если я дамэто без конвертации, что правда ...

Ответы [ 2 ]

2 голосов
/ 09 сентября 2010

Давайте предположим, что загадочный Exntended ASCII - это просто Latin1.Затем используйте маску из Википедии:

110y yyxx 10xx xxxx

Так как у вас есть только 00..FF, то у вас есть: 1100 00xx 10xx xxxx.

Алгоритм преобразования будет следующим: если код символа <127, просто сбросьте его как есть, если он> 127, то вы 0xC0 | ((x & 0xC0) >> 24) переходите к первому байту, второй - ((x & 0x3F) | 0x80)

2 голосов
/ 09 сентября 2010

Используйте MultiByteToWideChar для преобразования вашей строки в UTF-16, затем используйте WideCharToMultiByte для преобразования ее в UTF-8.

...