我必须创建一个文本文件(.txt, .doc,
...),其中包含.net
WebaApi传递的确切文本(因此使用emojis)(并将其附加到电子邮件中)。
我有一个.net webapi的项目。我的一条路线包括创建文本文件并将其附加到电子邮件,其中一些文本由可能包含emojis的设备传递。
我无法弄清楚如何正确保存表情符号。如果我将表情符号复制粘贴到单词或记事本文件中它可以工作,但如果我通过我的代码保存它不会。我想这是由于格式化,但我尝试了Unicode, UTF-32, UTF-8, ASCII
,...
我在SO上尝试了很多解决方案,但没有一个能为我工作。
例如这个表情符号(从.net调试器复制粘贴) - >根据使用的编码转换为引号或¶ó
。
如何将表情符号作为文本保存到文件中,以便接收者可以读取它们?
这就是我所做的:
//smsText is a string containing emojis
byte[] bytes = Encoding.Unicode.GetBytes(smsText);
Attachment attachment = new Attachment(new MemoryStream(bytes), tokenKey + ".doc");
attachment.ContentType = new ContentType("application/ms-word");
List <Attachment> attachments = new List<Attachment>();
attachments.Add(attachment);
//send email with attachments
请注意,带调试器的smsText包含正确显示的内容。
电子邮件使用.doc附件正确到达接收方,但附件中不包含表情符号
答案 0 :(得分:3)
您的smsText
包含明文字符串。您不能将该字符串写入流或文件中,然后将其称为Word文件 * 。
Word文件是具有特定格式的二进制文件。您需要使用可以编写此格式的库,或使用Interop与现有Word安装进行互操作。
请参阅示例Free library to MS Word。
如果您对明文文件很好,只需将文本的字节写入流并传播适当的编码(在本例中为Unicode,在.NET上为UTF-16)。
* :是的,就像Excel尽力将HTML表格格式化为Excel文档一样,但你不应该这样做。