根本原因是notepad++未正确识别文件实际编码,如将gbk文件误作utf-8解析,导致汉字显示为问号或方块;应先以正确编码(如gb18030)打开并确认正常,再转为utf-8-bom保存。

为什么Notepad++打开文件显示问号或方块?
根本原因是Notepad++没正确识别文件的实际编码,比如文件是GBK却按UTF-8解析,或者反过来。它不会“猜错就自动修正”,而是直接用错误编码映射字节——汉字变成?、或方块(),尤其常见于中文Windows环境下编辑的文本、日志、配置文件。
怎么强制转换字符集而不丢数据?
关键在「先用原编码正确读入,再转存为新编码」。不能直接点「编码 → UTF-8」——那只是强行重解释当前乱码内容,结果更糟。正确流程:
- 先尝试用可能的原始编码打开:菜单栏 编码 → 选择字符集 → 中文 → GBK(或
GB2312、GB18030);如果文字恢复了,说明原始就是GBK系 - 确认显示正常后,再选 编码 → 转为UTF-8-BOM 或 转为UTF-8(推荐带BOM,兼容性更好)
- 务必立刻保存(Ctrl+S),否则关闭再开又变回原编码
- 如果不确定原始编码,可试 编码 → 以UTF-8格式编码(注意:这是“重解释为UTF-8”,仅当已正确显示时才安全)
哪些编码选项实际有用?
Notepad++里真正影响显示的只有顶部「编码」菜单下的切换项,其他如「语言」或「格式」无关。常用且有效的有:
-
ANSI:Windows简体中文系统默认即GBK,不是ASCII;双击打开的.txt文件常被认成这个,但容易误判 -
UTF-8和UTF-8-BOM:现代标准,但若文件无BOM且含中文,Notepad++可能误判为ANSI -
GB2312/GBK/GB18030:依次兼容范围更广,GB18030能覆盖所有中文汉字(包括生僻字),优先试它 - 避免点
UCS-2 BE/LE,那是Windows记事本老式Unicode,现在极少遇到
保存后还是乱码?检查这三点
乱码反复出现,往往不是编码问题,而是外部干扰:
- 文件被其他程序(如Excel、微信、某些IDE)静默修改并另存为不同编码,重新打开前确认来源
- 行尾符混用:
\r\n(Windows)和\n(Linux)不影响中文显示,但某些老旧工具会因此跳过BOM判断,导致编码识别失败 - Notepad++插件冲突:禁用
Python Script、Converter等编码相关插件后再试,它们有时劫持编码逻辑
最稳妥的做法永远是:用GB18030打开 → 确认文字正常 → 转UTF-8-BOM → 保存。BOM虽小,却是让VS Code、Sublime、甚至Windows记事本后续都能自动识别的关键字节。











