小编Jyo*_*ane的帖子

C#Encoding.Convert与C++ MultiByteToWideChar

我有一个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#代码有什么问题吗?

c# utf-16 character-encoding

1
推荐指数
1
解决办法
6259
查看次数

标签 统计

c# ×1

character-encoding ×1

utf-16 ×1