如何使用microsoft visual studio 2005将扩展ascii中编码的std :: string转换为utf8?
我正在使用谷歌协议缓冲区并且它抱怨我的字符串中的非utf8字符,如果我没有转换就给它,这是真的......
答案 0 :(得分:2)
使用MultiByteToWideChar将字符串转换为UTF-16,然后使用WideCharToMultiByte将其转换为UTF-8。
答案 1 :(得分:2)
让我们假设神秘的Exntended ASCII只是Latin1。然后使用维基百科的掩码:
110y yyxx 10xx xxxx
由于您只有00..FF,因此您拥有:1100 00xx 10xx xxxx
。
将会跟随转换算法。 127然后按原样转储它,如果它是> 127然后你0xC0 | ((x & 0xC0) >> 24)
转到第一个字节,第二个是((x & 0x3F) | 0x80)