我想将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("हैलो फ़्रेंड्स");
答案 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
。