将字符串转换为 UTF8

Transforming string to UTF8

我有一个通过 C# 从电子邮件中收到的字符串,我想以正确的格式显示它。我知道输入的编码是 Encoding.Default,根据 this answer 我必须将它转换为 utf8,所以我尝试了这个代码:

byte[] bytes = Encoding.Default.GetBytes(input);
string strResult = Encoding.UTF8.GetString(bytes);

有效,但无法转换某些字符:
其实在web邮件界面中原来的字符串是:

باسلام همکار گرامی شماره 53018 مربوط به دبیرخانه ستاد می باشد لطفا اصلاح فرمائید 

当我用我给出的代码转换字符串时:

باس �?ا�? �?�?�?ار گرا�?�? �?ا�?�? ش�?ار�? 53018  �?رب�?ط ب�? د ب�?رخا�?�? ستاد �?�? باشد �?طفا اص�?اح فر�?ائ�?د�? 

有什么想法吗?
更新: PS:输入变量的内容:

اÙزاÙØ´ تسÙÙÙات \r\n \r\n\r\n باس Ùا٠ÙÙÙار گراÙÙ ÙاÙÙ Ø´ÙارÙ

终于解决了问题(+),如你所知,UTF-8编码单元值在C#字符串中存储为一串16位编码单元,所以我们应该验证每个编码单位在一个字节范围内,首先我们应该将这些值复制成字节,然后将新的UTF-8字节序列转换为UTF-16:

byte[] utf8Bytes = new byte[utf8String.Length];
for (int i=0;i<utf8String.Length;++i) {
      utf8Bytes[i] = (byte)utf8String[i];
}
var result  = Encoding.UTF8.GetString(utf8Bytes,0,utf8Bytes.Length);

所以对于这个输入:

اÙزاÙØ´ تسÙÙÙات \r\n\r\n\r\n<p>باسÙا٠ÙÙÙار گراÙÙ ÙاÙÙ Ø´ÙارÙ&nbsp;53018 &nbsp;ÙربÙØ· ب٠د بÙرخاÙ٠ستاد Ù٠باشد ÙØ·Ùا اصÙاح ÙرÙائÙد\r\n\r\n

我得到正确的结果:

افزايش تسهيلات \r\n\r\n\r\n<p>باسلام همكار گرامي نامه شماره&nbsp;53018 &nbsp;مربوط به د بيرخانه ستاد مي باشد لطفا اصلاح فرمائيد\r\n\r\n \r\n\r\n

PS:为了删除多余的字符,我使用此代码:

result = result.Replace('\r', ' ').Replace('\n', ' ').ToString();