2

如何使用 Microsoft Visual Studio 2005 将扩展 ascii 编码的 std::string 转换为 utf8?

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

4

2 回答 2

2

让我们假设神秘的扩展 ASCII 只是 Latin1。然后使用维基百科的面具:

110y yyxx 10xx xxxx

既然你只有 00..FF 那么你有:1100 00xx 10xx xxxx.

转换算法将如下所示,如果字符代码 < 127 则按原样转储,如果 > 127 则0xC0 | ((x & 0xC0) >> 24)转到第一个字节,第二个是((x & 0x3F) | 0x80)

于 2010-09-09T16:35:44.027 回答
2

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

于 2010-09-09T16:30:15.487 回答