如何在c#中将unicode转换为utf-8编码

sat*_*der 0 c# unicode utf-8

我想将 unicode 字符串转换为 UTF8 字符串。我想在 SMS API 中使用这个 UTF8 字符串来发送 unicode SMS。我想要像这个工具这样的转换 https://cafewebmaster.com/online_tools/utf8_encode

例如。我有 unicode 字符串“???? ????????” 应该转换成“हà¥à¤²à¥à¥à¥à¤°à¥à¤à¤¡à¥à¤¸”

我试过这个但没有得到预期的输出

    private string UnicodeToUTF8(string strFrom)
        {
           byte[] bytes = Encoding.Default.GetBytes(strFrom);

           return Encoding.UTF8.GetString(bytes);

        }
Run Code Online (Sandbox Code Playgroud)

并像这样调用函数

string myUTF8String = UnicodeToUTF8("???? ????????");
Run Code Online (Sandbox Code Playgroud)

Kyl*_*yle 6

我认为如果不了解您要使用的 SMS API 的更多信息,就无法具体回答。stringC# 中的类型是 UTF-16。如果您想要不同的编码,它会以 a 的形式提供给您byte[](因为 astring始终是 UTF-16)。

可以通过执行以下操作将其“转换”为字符串:

static string UnicodeToUTF8(string from) {
    var bytes = Encoding.UTF8.GetBytes(from);
    return new string(bytes.Select(b => (char)b).ToArray());
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这会产生与您链接的网站相同的输出。但是,在不知道您将此字符串传递给哪个 API 的情况下,我不能保证这最终会起作用。

关键string是我们不需要担心它的底层编码,但是这种转换操作是一种巨大的黑客攻击,并且不再保证string表示格式良好的字符串。

如果某些东西需要 UTF-8 编码,它应该接受一个byte[],而不是一个string