如何使用microsoft visual studio 2005将扩展ascii中编码的std :: string转换为utf8?将扩展ascii转换为utf8
我使用谷歌的协议缓存,它的抱怨在我的字符串非UTF8字符,如果我给它无需转换,这是真的......
如何使用microsoft visual studio 2005将扩展ascii中编码的std :: string转换为utf8?将扩展ascii转换为utf8
我使用谷歌的协议缓存,它的抱怨在我的字符串非UTF8字符,如果我给它无需转换,这是真的......
使用MultiByteToWideChar将字符串转换为UTF-16,然后使用WideCharToMultiByte将其转换为UTF-8。
我们假设神秘的Exntended ASCII只是Latin1。然后使用面膜从维基百科:
110Y yyxx 10XX XXXX
因为你只有00..FF那么你必须:1100 00xx 10xx xxxx
。
转换算法将是继中,如果字符代码是< 127然后就放弃它原样,如果是> 127,那么你做0xC0 | ((x & 0xC0) >> 24)
进入第一个字节,第二个是((x & 0x3F) | 0x80)
你在说什么“来自维基百科的面具”?您还没有生成有效的UTF-8; UTF-8在其中没有任何零字节。 – 2010-09-09 16:58:59
你所说的“扩展的意思是ASCII“? – 2010-09-09 16:21:57
没有“扩展ASCII”这样的东西。您首先需要找出编码(如ISO 8859-1 aka Latin-1或某些Windows代码页)。 – DarkDust 2010-09-09 16:24:27
http://en.wikipedia.org/wiki/Extended_ASCII我猜我在谈论ISO-8859-1 – foke 2010-09-09 16:24:55