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

时间:2018-12-27 08:08:47

标签: 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);

        }

并调用这样的函数

string myUTF8String = UnicodeToUTF8("हैलो फ़्रेंड्स");

1 个答案:

答案 0 :(得分:3)

如果您不了解要使用的SMS API,我认为无法具体回答。 C#中的string类型为UTF-16。如果您希望使用其他编码,则将其作为byte[]来使用(因为string始终为UTF-16)。

您可以通过以下操作将其“投射”到字符串中:

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

据我所知,它产生的结果与您链接的网站相同。但是,在不知道将字符串传递给哪个API的情况下,我无法保证这最终会成功。

string的要点是,我们不必担心其底层编码,但是此强制转换操作是一种巨大的破解,不能保证string代表格式正确字符串了。

如果某些对象期望使用UTF-8编码,则应接受byte[],而不是string