Outlook writes signature .htm files in the system ANSI code page (windows-1251 on Russian Windows) without a BOM, but File.ReadAllText defaults to UTF-8 for BOM-less files - mangling Cyrillic into replacement characters. ReadSignatureHtml now checks BOM, then a <meta charset> tag, then falls back to Encoding.Default (the actual system code page) before ever assuming UTF-8. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>