Notepad++运行Lua脚本输出中文乱码,根本原因是cmd默认GBK编码与UTF-8文件错位;临时解法为F5命令前加chcp 65001 &&,中文路径必须用英文双引号包裹,文件本身乱码需先以GB18030打开再转为UTF-8保存。

lua.exe输出中文乱码,根本不是脚本问题
Notepad++ 里 print("你好") 显示“浣犲ソ”或方块,90% 是 Windows 控制台(cmd)默认用 GBK 编码,而 Notepad++ 当前文件是 UTF-8,两者错位导致。Lua 本身不处理终端编码,io.stdout:setvbuf('no') 只刷新缓冲区,不改编码。
临时解法:在 F5 命令最前面加 chcp 65001 &&,完整写成:chcp 65001 && lua "$(FULL_CURRENT_PATH)"。这会让 cmd 切到 UTF-8 模式再执行 Lua,对单次调试够用。
长期隐患:每次手动加前缀易漏;若脚本里调用了 os.execute("echo 你好"),这部分仍走系统默认编码,照样乱。
Notepad++ 打开的 Lua 文件自己就乱码
这不是运行时问题,是文件保存时编码选错了。比如你用记事本存了中文,它默认 GBK,但 Notepad++ 以 UTF-8 打开,就会显示“锟斤拷”。
安全修复步骤:
- 点击菜单【编码】→【以GB18030编码】(优先试这个,兼容 GBK/GB2312)——如果文字立刻变正常,说明原始编码就是它
- 确认后点【编码】→【转为UTF-8】→ Ctrl+S 保存
- 关掉再重开,右下角状态栏应显示
UTF-8,且print输出和文件内容都一致
切记:不要点【转为UTF-8】之前先点【以UTF-8编码】——那是在用错误规则重新解码一堆乱码,结果会固化损坏。
NppExec 中文输出仍乱?检查插件是否支持 UTF-8
NppExec v1.0+ 默认支持 UTF-8 输出,但旧版本(如 0.9.9)会把 chcp 65001 的效果吃掉,导致控制台面板里还是方块。
验证方式:在 NppExec → Execute 中输入:chcp 65001 & echo 你好,运行看输出是否正常。如果不正常:
- 卸载旧版 NppExec,去官网下载最新
NppExec.dll(注意匹配 Notepad++ 32/64 位) - 替换到
%ProgramFiles%\Notepad++\plugins\NppExec\目录,重启编辑器 - 新脚本里保持
chcp 65001 && lua "$(FILE_NAME)"结构,别省略&&
中文路径导致 lua.exe 崩溃或找不到文件
错误现象是黑窗一闪、没报错、也没输出,或者提示 cannot open D:\我的脚本.lua: No such file or directory——注意它只读到了 D:\我的脚本,后面 .lua 被截断了。
根本原因是 cmd 把含中文的路径当成了多个参数,除非你显式加引号。F5 或 NppExec 中所有路径变量必须包裹双引号:
- ✅ 正确:
lua "$(FULL_CURRENT_PATH)"、"C:\lua\lua.exe" "$(FILE_NAME)" - ❌ 错误:
lua $(FULL_CURRENT_PATH)(空格或中文会让 cmd 分词) - ⚠️ 注意:
"$(CURRENT_DIRECTORY)"末尾不带反斜杠,拼接文件名时要补上,例如:cd "$(CURRENT_DIRECTORY)" && lua "$(FILE_NAME)"
最稳妥的长期方案:开发阶段统一用英文路径,避免在编码、PATH、shell 解析三重关卡上反复踩坑。


















