繁体   English   中英

使用表情符号将文本保存到文件变为“?”

[英]Save text with emoji to file become '?'

我该怎么办

我必须创建一个文本文件( .txt, .doc, ...),其中包含.net WebaApi传递的确切文本(因此使用emojis)(并将其附加到电子邮件中)。

情况:

我有一个.net webapi的项目。 我的一条路线包括创建一个文本文件并将其附加到电子邮件,其中一些文本由可能包含表情符号的设备传递

我无法弄清楚如何正确保存表情符号。 如果我将表情符号复制粘贴到单词或记事本文件中它可以工作,但如果我通过我的代码保存它不会。 我想这是由于格式化,但我尝试了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附件到达接收者,但附件不包含表情符号

您的smsText包含一个纯文本字符串。 您不能只将该字符串写入您随后调用Word文件*的流或文件中。

Word文件是具有特定格式的二进制文件。 您需要使用可以编写此格式的库,或使用Interop与现有Word安装进行互操作。

请参阅例如免费库到MS Word

如果你对纯文本文件很好,只需将文本的字节写入流并传播适当的编码(在本例中为Unicode,在.NET上为UTF-16)。

* :是的,就像Excel尽力将HTML表格格式化为Excel文档一样,但你不应该这样做。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM