从扩展ASCII转换为UTF8
-
01-10-2019 - |
题
如何使用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)
不隶属于 StackOverflow