如何使用 Microsoft Visual Studio 2005 将扩展 ascii 编码的 std::string 转换为 utf8?
我正在使用谷歌协议缓冲区,如果我在没有转换的情况下给出它,它会抱怨我的字符串中的非 utf8 字符,这是真的......
如何使用 Microsoft Visual Studio 2005 将扩展 ascii 编码的 std::string 转换为 utf8?
我正在使用谷歌协议缓冲区,如果我在没有转换的情况下给出它,它会抱怨我的字符串中的非 utf8 字符,这是真的......
让我们假设神秘的扩展 ASCII 只是 Latin1。然后使用维基百科的面具:
110y yyxx 10xx xxxx
既然你只有 00..FF 那么你有:1100 00xx 10xx xxxx
.
转换算法将如下所示,如果字符代码 < 127 则按原样转储,如果 > 127 则0xC0 | ((x & 0xC0) >> 24)
转到第一个字节,第二个是((x & 0x3F) | 0x80)
使用MultiByteToWideChar将您的字符串转换为 UTF-16,然后使用WideCharToMultiByte将其转换为 UTF-8。