从扩展的ascii转换为utf8

时间:2010-09-09 16:17:43

标签: c++ utf-8 protocol-buffers extended-ascii

如何使用microsoft visual studio 2005将扩展ascii中编码的std :: string转换为utf8?

我正在使用谷歌协议缓冲区并且它抱怨我的字符串中的非utf8字符,如果我没有转换就给它,这是真的......

2 个答案:

答案 0 :(得分:2)

使用MultiByteToWideChar将字符串转换为UTF-16,然后使用WideCharToMultiByte将其转换为UTF-8。

答案 1 :(得分:2)

让我们假设神秘的Exntended ASCII只是Latin1。然后使用维基百科的掩码:

  

110y yyxx 10xx xxxx

由于您只有00..FF,因此您拥有:1100 00xx 10xx xxxx

如果char代码是<

将会跟随转换算法。 127然后按原样转储它,如果它是> 127然后你0xC0 | ((x & 0xC0) >> 24)转到第一个字节,第二个是((x & 0x3F) | 0x80)