我有一个 C++ 代码片段,它使用 MultiByteToWideChar 将 UTF-8 字符串转换为 UTF-16
对于 C++,如果输入是“Hôtel”,则输出是“Hôtel”,这是正确的
对于 C#,如果输入是“Hôtel”,则输出是“Hôtel”,这是不正确的。
从 UTF8 转换为 UTF16 的 C# 代码看起来像
Encoding.Unicode.GetString(
Encoding.Convert(
Encoding.UTF8,
Encoding.Unicode,
Encoding.UTF8.GetBytes(utf8)));
在 C++ 中,转换代码看起来像
MultiByteToWideChar(
CP_UTF8, // convert from UTF-8
0, // default flags
utf8.data(), // source UTF-8 string
utf8.length(), // length (in chars) of source UTF-8 string
&utf16[0], // destination buffer
utf16.length() // size of destination buffer, in wchar_t's
)
我希望在 C# 中获得与在 C++ 中相同的结果。C#代码有什么问题吗?