SQL Server sp_send_dbmail主题行HTML符号提交Azure Devops Git后变问号求助
SQL Server邮件主题HTML符号显示异常问题解决
问题描述
使用SQL Server 2019开发邮件发送逻辑,代码中包含✅符号:
- 在SQL Server Management Studio、Visual Studio 2019中连接Azure Devops检入代码时,符号显示正常
- 提交代码到Azure Devops Git仓库后,✅被替换为问号(?)
- 改用HTML编码
✅后,邮件正文显示正常,但主题行仍无法正确解析该符号
原因分析
- Git仓库默认编码可能未设置为UTF-8,导致Unicode字符提交时被转义丢失
- 邮件主题不支持HTML编码解析,仅能识别原生Unicode字符
解决方案
1. 直接使用Unicode字符定义主题
利用SQL Server的nvarchar类型支持Unicode的特性,直接在主题变量中使用带N前缀的原生✅符号,无需HTML编码:
DECLARE @subject nvarchar(max) SET @subject = N'✅' + N' - my symbol' DECLARE @body nvarchar(max) SET @body = N'<font size=''2'' color=''red''>✅' + N' - my symbol</font>' EXEC msdb.dbo.sp_send_dbmail @recipients = 'myemail@domain.com', @subject = @subject, @body = @body, @body_format = 'HTML';
2. 配置Git仓库编码为UTF-8
确保Azure Devops Git仓库的编码设置为UTF-8,避免Unicode字符在提交时被损坏:
- 在仓库设置中,将默认编码改为UTF-8
- 提交代码时,确保本地Git客户端的
core.encoding配置为utf-8,可通过命令设置:git config --global core.encoding utf-8
内容的提问来源于stack exchange,提问作者ITHelpGuy
相关产品推荐
相关产品推荐

