Notepad++新建文件默认编码为ANSI(如中文系统是GBK)而非UTF-8,系为兼容旧程序;需在“设置→首选项→新建文档/默认目录”中将“新文档的默认编码”设为UTF-8(非UTF-8-BOM)并勾选对应选项。

新文件默认编码为什么不是UTF-8
Notepad++ 启动时新建的 新建 1 文件,默认编码取决于系统区域设置(ANSI)——比如中文 Windows 默认是 GBK,不是 UTF-8。这不是 bug,是历史兼容逻辑:老程序依赖本地 ANSI 编码读写文本,Notepad++ 默认沿用它来避免乱码风险。
但你现在写代码、写 Markdown、协作交稿,基本都要求 UTF-8(尤其带英文符号、emoji 或多语言混合时)。不改的话,一保存就可能悄悄变成 UTF-8 without BOM 或 ANSI,Git 提交后别人打开就是乱码。
- 修改位置在:
设置 → 首选项 → 新建文档/默认目录 - 关键选项是:
新文档的默认编码下拉框,选UTF-8(不是UTF-8-BOM) - 勾选
以 UTF-8 无 BOM 格式编码—— 这项只影响“新建文件”,不影响已打开文件的编码 - 改完不用重启,下次点「新建」就生效
UTF-8 和 UTF-8-BOM 的区别在哪
差别就在文件开头是否塞了三个字节 EF BB BF。很多工具(比如 Windows 记事本、PowerShell、部分 Python 脚本)靠这个 BOM 判断是不是 UTF-8;但 Linux/macOS 工具、Git、Node.js、Python 3.12+ 默认当它是脏数据,读取时可能报 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xef。
-
UTF-8(无 BOM):通用性最好,推荐作为新文件默认 -
UTF-8-BOM:仅在必须兼容老旧 Windows 工具链(如某些 VBScript 或旧版 Excel 导入)时才用 - 注意:
UTF-8选项在下拉菜单里叫「UTF-8」,UTF-8-BOM叫「UTF-8-BOM」——名字差一个短横,但行为完全不同
已打开文件的编码不会被默认设置影响
很多人改完默认编码,发现正在编辑的文件还是显示「ANSI」或「GBK」,以为没生效。其实 Notepad++ 对「已打开文件」严格保持原始编码,不自动转换——这是保护数据安全的设计。
- 要转当前文件编码:菜单栏点
编码 → 转为 UTF-8(会重载内容并标记为 UTF-8) - 如果原内容是 GBK,转成 UTF-8 后保存,别人用标准工具打开就不会乱码
- 批量转多个文件?用
搜索 → 在文件中替换配合「编码」下拉选择目标编码,但更稳的方式是先用编码 → 转为 ANSI再转 UTF-8,避免中间错解
插件和外部工具可能绕过默认设置
比如你装了 Python Script 插件,用脚本新建文档:notepad.new() 创建的文件,编码由插件内部逻辑决定,不一定走主程序的默认设置;又或者用命令行启动:notepad++.exe -n -c "UTF-8" file.txt,-c 参数会覆盖 GUI 设置。
- 确认当前文件真实编码:看窗口右下角状态栏,显示的是实际编码(如
ANSI、UTF-8),不是“默认” - 想让所有场景统一?除了改 GUI 默认值,还要检查:
设置 → 首选项 → 备份 → 始终以 UTF-8 格式保存(这个开关会影响「保存」动作,但不改变「新建」) - 企业环境部署时,配置文件
config.xml中的newDocDefaultEncoding字段值必须是4(对应 UTF-8),不是字符串"UTF-8"—— 数值映射容易配错
最常被忽略的一点:改完默认编码后,新建文件确实是 UTF-8,但如果你双击打开一个已有 .txt 文件,它仍按文件内容自动检测编码——这时候右下角显示什么,才是它的真实编码。别光看「新建」,得盯住那个状态栏。

















