2

我在 C++ 和 C# 中有一个字符串处理函数。在 C++ 中,字符的代码ˆ返回为-120C# 中的710. 在使用 Visual Studio 2010 在 C++ 中构建时,我在项目设置中将字符集设置为“未设置”。在 C# 中,我System.Text.Encoding.Default在其中一次转换期间使用。这有什么区别吗?如何在 C++ 和 C# 中获得相同的行为?

4

1 回答 1

7

字符是 U+02C6。您在 C++ 中使用的编码可能是 CP 1252,它将此字符编码为字节 0x88(在十进制中显示有符号字符时为 -120)。C# 使用编码 UTF-16,将这个字符编码为 0x02C6(十进制的 710)。

您可以在 Windows 上使用 wchar_t insead of char 在 C++ 中使用 UTF-16。

您不能使 C# 字符串使用 CP1252,但您可以使用 Encodings 从字符串中获取不同编码的字节数组。

byte[] in_cp1252 = Encoding.GetEncoding(1252).GetBytes("Your string here");
于 2012-06-13T05:48:10.197 回答