notepad++默认编码为ansi,需在“设置→首选项→新建/打开”中将新建文档默认编码设为utf-8并勾选“以utf-8无bom格式保存新文档”;已打开文件需先正确识别原始编码(如gbk),再通过“编码→转为utf-8”转换并立即保存。

Notepad++ 保存文件时默认不是 UTF-8,怎么改?
Notepad++ 新建文件默认用的是 ANSI(Windows 系统本地编码,比如 GBK),不是 UTF-8。直接点「保存」会存成乱码风险高的格式,尤其含中文、emoji 或跨平台协作时。
- 在菜单栏点 设置 → 首选项 → 新建/打开
- 找到
新建文档的默认编码 下拉框,选 UTF-8(别选 UTF-8-BOM,除非明确需要)
- 勾上
以 UTF-8 无 BOM 格式保存新文档(这个勾选才真正生效)
- 关闭后新建的文件才默认走
UTF-8;已打开的旧文件不受影响,需手动转
新建文档的默认编码 下拉框,选 UTF-8(别选 UTF-8-BOM,除非明确需要) 以 UTF-8 无 BOM 格式保存新文档(这个勾选才真正生效) UTF-8;已打开的旧文件不受影响,需手动转注意:UTF-8-BOM 开头多三个字节 EF BB BF,某些脚本(如 Python、Shell)会报 SyntaxError: Non-UTF-8 code starting with '\xef',Node.js 也可能读取异常。
已打开的文件怎么快速转成 UTF-8?
文件右上角显示当前编码(如 ANSI、UTF-8-BOM),点菜单栏 编码 → 转为 UTF-8 即可。这不是“另存为”,而是内存中重解码再写回——但有前提:
- 如果原内容是 GBK 编码却误标成
ANSI,直接点「转为 UTF-8」会变乱码(因为 Notepad++ 按当前标记编码读字节,再按 UTF-8 写出)
- 正确做法:先确认原始编码 → 编码 → 字符集 → 中文 → GBK(或对应编码)→ 再点 编码 → 转为 UTF-8
- 转完立刻点「保存」,否则关掉就丢
ANSI,直接点「转为 UTF-8」会变乱码(因为 Notepad++ 按当前标记编码读字节,再按 UTF-8 写出) 常见错误现象:编码 → 转为 UTF-8 后中文变方块或问号,说明原始编码识别错了,得退回重新指定。
为什么有些文件「转为 UTF-8」后大小没变,有些却变大了?
这和是否含 BOM 及换行符有关:
-
UTF-8(无 BOM):纯文本字节数基本不变(ASCII 字符占 1 字节,中文通常 3 字节)
-
UTF-8-BOM:开头强制加 3 字节 EF BB BF,文件大小 +3
- Windows 换行符
\r\n(2 字节)比 Unix 的 \n(1 字节)多占空间,但和编码无关
- 若原文档是 GBK,一个中文占 2 字节;转成 UTF-8 后占 3 字节,整体体积增大约 50%
UTF-8(无 BOM):纯文本字节数基本不变(ASCII 字符占 1 字节,中文通常 3 字节) UTF-8-BOM:开头强制加 3 字节 EF BB BF,文件大小 +3 \r\n(2 字节)比 Unix 的 \n(1 字节)多占空间,但和编码无关 性能影响几乎可忽略,但 Git 提交时若混用 UTF-8 和 UTF-8-BOM,diff 会把 BOM 当作修改,CI 流水线可能误判。
批量转换多个文件的 UTF-8 编码,能自动化吗?
Notepad++ 自带功能不支持批量转码保存,但可通过插件或外部工具补足:
- 安装插件
Python Script(需先装 Python 运行时),写脚本遍历并调用 NppToUtf8() 函数
- 更稳妥的做法:用命令行工具,比如
iconv(Linux/macOS 自带,Windows 可装 git-bash 或 cygwin) iconv -f GBK -t UTF-8 input.txt -o output.txt
- 注意路径含空格时要加引号,且
iconv 不覆盖原文件,必须用 -o 指定输出
Python Script(需先装 Python 运行时),写脚本遍历并调用 NppToUtf8() 函数 iconv(Linux/macOS 自带,Windows 可装 git-bash 或 cygwin) iconv -f GBK -t UTF-8 input.txt -o output.txt
iconv 不覆盖原文件,必须用 -o 指定输出 容易踩的坑:没确认源编码就硬转,结果批量制造乱码文件;或者用 notepad++.exe /a file.txt 命令行打开时,编码状态不继承全局设置,仍按文件自身 BOM 或内容推测。
BOM 是最常被忽略的细节——它看不见,但 Python 解释器、Webpack、甚至某些 JSON 解析器会直接报错,而不是警告。










