SSMS修改存储过程默认编码为UTF16-LE BOM,需自动设为UTF-8适配Git
如何将SSMS中修改后存储过程的默认保存编码设为UTF-8
问题背景
在SSMS中从对象资源管理器打开现有存储过程并修改后,默认以UTF16-LE BOM编码保存,而新建SQL文件默认使用UTF-8编码(由C:\Program Files (x86)\Microsoft SQL Server\140\Tools\Binn\ManagementStudio\SqlWorkbenchProjectItems\Sql\SQLFile.sql的编码决定)。Git会将UTF16-LE BOM编码文件识别为二进制文件,不符合版本控制规范,需将默认保存编码统一为UTF-8。
环境信息
- Windows 10
- SQL Server Management Studio v19.1.56.0
- Microsoft SQL Server 2019 (RTM-CU23) (KB5030333) - 15.0.4335.1 (X64) Developer Edition
可行解决方案
方法1:通过SSMS选项直接修改默认编码
- 打开SSMS,点击顶部菜单的工具 -> 选项
- 在左侧导航栏依次展开:SQL Server对象资源管理器 -> 脚本
- 在右侧找到编码下拉选项,选择UTF-8
- 点击确定保存设置,重启SSMS生效
此设置会修改从数据库对象(存储过程、表等)打开并编辑后保存的默认编码,与新建SQL文件的UTF-8编码保持一致。
方法2:修改注册表强制设置默认编码
如果方法1中未找到对应选项,可通过注册表修改:
- 按下
Win + R,输入regedit打开注册表编辑器 - 导航至路径:
HKEY_CURRENT_USER\Software\Microsoft\SQL Server Management Studio\19.0\Text Editor - 找到
DefaultEncodingDWORD值(若不存在则右键新建DWORD(32位)值,命名为DefaultEncoding) - 将其值改为
65001(UTF-8对应的代码页) - 重启SSMS生效
补充:生成脚本时指定编码
若上述方法仍未生效,可使用SSMS的生成脚本功能导出存储过程:
- 在对象资源管理器中右键目标存储过程,选择编写存储过程脚本为 -> CREATE到 -> 文件
- 在保存对话框中,点击右下角的编码下拉菜单,选择UTF-8,保存文件
- 后续直接编辑该UTF-8编码的脚本文件,修改后保存默认会沿用UTF-8编码
说明
修改SQLFile.sql的编码仅对新建空白SQL文件生效,无法影响从数据库对象打开并编辑的脚本的默认保存编码,因此之前的尝试无法解决问题。
内容的提问来源于stack exchange,提问作者BartmanDilaw
相关产品推荐
相关产品推荐

