notepad++新建文件默认为ansi(中文windows即gbk),需在“设置→首选项→新建文档/默认目录”中将“新文档的默认编码”设为utf-8 without bom并勾选“以utf-8无bom格式编码”才生效;双击打开文件需通过“语言→定义语言”绑定后缀与utf-8无bom编码,避免自动检测误判为gbk。

Notepad++ 新建文件默认是 ANSI(中文 Windows 就是 GBK),不是 UTF-8,改不了这个行为本身,但可以绕过它——关键不是“设默认编码”,而是控制「新建」和「打开」两个动作分别用什么编码。
怎么让 Ctrl+N 新建的文件直接是 UTF-8(无 BOM)
这不是靠“设置默认编码”菜单实现的,那个菜单只影响「已打开文件手动切换时的预设值」,对新建无效。真正起作用的是:
- 进入
设置 → 首选项 → 新建文档/默认目录 - 在
新文档的默认编码下拉框中,**必须选UTF-8 without BOM**(注意:选UTF-8本身 = 带 BOM,不是你想要的) - 勾选
以UTF-8 无 BOM 格式编码—— 这个勾选项才是让新建生效的开关 - 改完不用重启,下次按
Ctrl+N或点「新建」就直接是 UTF-8 without BOM
为什么点了 UTF-8 还是带 BOM?
Notepad++ 的 UI 有歧义:UTF-8 选项名没写全,实际行为就是带 BOM(即字节序列 EF BB BF)。很多脚本(比如 Python 的 #!/usr/bin/env python3 行)遇到开头这三个字节会直接报 SyntaxError: Non-UTF-8 code starting with '\xef'。
所以务必手动选 UTF-8 without BOM,而不是只看名字里有没有 “UTF-8”。
怎么让双击打开的 .txt/.log 文件也优先用 UTF-8
仅靠「以UTF-8无BOM格式打开」勾选不够,因为 Notepad++ 的自动检测顺序是硬编码的:UTF-8 with BOM → UTF-16 → ANSI(GBK)→ UTF-8 without BOM。无 BOM 的 UTF-8 文件,只要内容不包含高字节字符(比如纯英文日志),大概率被当成 GBK 解码,直接乱码。
可靠做法是绑定后缀与编码:
- 菜单栏
语言 → 定义语言,选一个基础语言(如Normal text)或新建一个 - 切到
扩展名标签页,填入你要强绑定的后缀,例如:*.txt *.log *.csv(空格分隔) - 切到
默认编码标签页,选UTF-8 without BOM,点保存 - 之后这些后缀的文件,跳过自动检测,直接按指定编码加载
已打开的乱码文件怎么安全转 UTF-8
别一上来就点「转为 UTF-8」——如果当前识别错(比如文件是 UTF-8 却被标成 ANSI),这操作等于把乱码再固化一遍。
正确三步:
- 先确认右下角显示的当前编码(比如显示
ANSI,但你怀疑其实是 UTF-8) - 点菜单
编码 → 以 UTF-8 格式编码(注意是「以…编码」,不是「转为」)——这只是重解释字节,不改内容 - 如果文字立刻变正常,再点
编码 → 转为 UTF-8,然后立刻Ctrl+S保存 - 如果变乱了,
Ctrl+Z撤回,换别的编码重试
最易被忽略的一点:「以某编码打开」和「转为某编码」是两套逻辑,混用就会二次乱码;而语言绑定后缀那一步,很多人以为设了「默认编码」就全局生效,其实它只对未被其他语言规则捕获的后缀起作用——比如 .json 默认走 JSON 语言规则,得去 JSON 语言定义里单独设编码。











