Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 创建Outlook签名时编码无效_C#_Utf 8_Outlook_Ms Word_Office Interop - Fatal编程技术网

C# 创建Outlook签名时编码无效

C# 创建Outlook签名时编码无效,c#,utf-8,outlook,ms-word,office-interop,C#,Utf 8,Outlook,Ms Word,Office Interop,我当前正在尝试创建并保存Outlook签名。 问题是,它总是以一种“默认”编码保存。 试图在多个地方以编程方式将其更改为UTF-8(!)似乎不起作用 我假设正确的位置仅是对WebOptions的更改,因为在检查之前的值时,其他编码已经设置为UTF-8 是否有办法更改编码并让Outlook以这种方式保存 这是一个演示问题的示例: using Microsoft.Office.Interop.Word; using System.Runtime.InteropServices; namespace

我当前正在尝试创建并保存Outlook签名。
问题是,它总是以一种“默认”编码保存。
试图在多个地方以编程方式将其更改为UTF-8(!)似乎不起作用

我假设正确的位置仅是对
WebOptions
的更改,因为在检查之前的值时,其他编码已经设置为UTF-8

是否有办法更改编码并让Outlook以这种方式保存

这是一个演示问题的示例:

using Microsoft.Office.Interop.Word;
using System.Runtime.InteropServices;

namespace CreateSignature
{
    class TestCreation
    {
        static void Main(string[] args)
        {
            Create();
        }

        public static void Create()
        {
            const string _LineBreak = "\v";

            string signature = string.Empty;

            Application word = new Application();
            var document = word.Documents.Add();
            var selection = word.Selection;

            word.Options.DefaultTextEncoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
            document.WebOptions.Encoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;

            selection.Font.Bold = 0;
            selection.Font.Name = "Verdana";
            selection.Font.Size = 9;
            selection.Font.Color = WdColor.wdColorBlack;

            selection.TypeText("Best regards");
            selection.TypeText(_LineBreak);

            selection.TypeText("Special text ### üäöß····· ###");
            selection.TypeText(_LineBreak);

            document.SaveEncoding = Microsoft.Office.Core.MsoEncoding.msoEncodingUTF8;
            document.Saved = true;

            var signatureName = "Test.Signature";

            var emailOptions = word.EmailOptions.EmailSignature;

            emailOptions.EmailSignatureEntries.Add(signatureName, document.Range());

            //emailOptions.NewMessageSignature = signatureName;
            //emailOptions.ReplyMessageSignature = signatureName;

            word.Quit(WdSaveOptions.wdSaveChanges);
            Marshal.ReleaseComObject(word);
        }
    }
}
.htm
文件将包含以下内容

<meta http-equiv=Content-Type content="text/html; charset=windows-1252">

它应该是
utf-8
而不是
windows-1252


虽然这不是一个已加载的文档,并且建议的更改无论如何都不起作用(
Fields.Count==0
)。

哪个.htm文件?@PepitoSh签名通过
EmailSignatureEntries.Add添加到Outlook时创建的文件之一。路径应该是
%appdata%\Microsoft\Signatures
。除非您必须有一个通用的解决方案,否则我建议您只编辑该.htm文件。@PepitoSh这些文件是为几百个用户在每次登录时生成的。我不想手动编辑它。它是否被强制使用Word?