如何使用Microsoft Visual Studio 2005将在扩展ASCII中编码的std ::字符串转换为UTF8?

我正在使用Google协议缓冲区,如果我不转换而对其进行了抱怨,则在我的字符串中抱怨它,这是正确的...

有帮助吗?

解决方案

采用 MultibytetoWideChar 要将字符串转换为UTF-16,然后使用 Widechartomultibyte 将其转换为UTF-8。

其他提示

让我们假设神秘的ASCII只是Latin1。然后使用Wikipedia的口罩:

110y yyxx 10xx xxxx

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

转换算法将遵循,如果char代码为<127,则将其按原样倾倒,如果是> 127,那么您要这样做 0xC0 | ((x & 0xC0) >> 24) 第一个字节,第二是 ((x & 0x3F) | 0x80)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top