我有一个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)));
Run Code Online (Sandbox Code Playgroud)
在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
)
Run Code Online (Sandbox Code Playgroud)
我希望在C#中获得与C++相同的结果.C#代码有什么问题吗?