挪威语字符为 '?'在 ics c# 中

Norwegian Characters as '?' in ics c#

我一直在尝试将日历事件 ics 作为附件发送到邮件中,但摘要和说明将“ø”等挪威字符显示为“?”。

请帮助我,因为我是 ASP.Net MVC 中日历事件的新手。

    System.Text.StringBuilder str = new StringBuilder();
        str.AppendLine("BEGIN:VCALENDAR");
        str.AppendLine("PRODID:-//Schedule a Meeting");
        str.AppendLine("VERSION:2.0");
        str.AppendLine("METHOD:PUBLISH");
        str.AppendLine("BEGIN:VEVENT");
        str.AppendLine(string.Format("DTSTART:{0:yyyyMMddTHHmmssZ}",model.Startdate));
        str.AppendLine(string.Format("DTSTAMP:{0:yyyyMMddTHHmmssZ}", DateTime.UtcNow));
        str.AppendLine(string.Format("DTEND:{0:yyyyMMddTHHmmssZ}", model.EndDate));
        str.AppendLine("LOCATION: " + model.Location);
        str.AppendLine(string.Format("UID:{0}", Guid.NewGuid()));
        str.AppendLine(string.Format("DESCRIPTION:{0}", model.desc));
        str.AppendLine(string.Format("SUMMARY:{0}", model.Name));
        str.AppendLine(string.Format("ORGANIZER:MAILTO:{0}", model.Email));
        str.AppendLine("BEGIN:VALARM");
        str.AppendLine("TRIGGER:-PT15M");
        str.AppendLine("ACTION:DISPLAY");
        str.AppendLine("DESCRIPTION:Reminder");
        str.AppendLine("END:VALARM");
        str.AppendLine("END:VEVENT");
        str.AppendLine("END:VCALENDAR");

        byte[] byteArray = Encoding.ASCII.GetBytes(str.ToString());
        MemoryStream stream = new MemoryStream(byteArray);

        Attachment attach = new Attachment(stream, "Invitation.ics");`

这里的问题是您在使用 ASCII 编码时丢失了特殊字符。使用其他一些编码,例如UTF8,这是一种可变的多字节编码,可以覆盖所有字符。

附件link展示了如何在ics文件中指定使用的编码: https://theeventscalendar.com/support/forums/topic/ical-text-encoding/