解决运行 Lua 脚本时中文输出乱码的问题
运行 lua config.lua 时出现的乱码提示:
閿欒锛氭湭鎸囧畾杈撳叆鎴栬緭鍑鸿矾寰其实是中文报错信息被错误编码显示导致的。
这类乱码常见于 Windows 控制台(cmd/powershell) 默认编码和 Lua 输出编码不一致。
一、原因分析
乱码原因通常有三种可能:
- 控制台编码与 Lua 输出编码不一致
- Windows 控制台默认使用 GBK 或 CP936;
 - Lua 解释器或脚本文件使用 UTF-8 编码;
 - 输出中文时,字节被错误解释成乱码。
 
 - 脚本文件编码不对
config.lua文件本身不是 UTF-8 编码;- 或包含了 UTF-8 BOM 导致 Lua 读取错误。
 
 - 错误消息本身是由 Lua 解释器输出的中文信息(非英文版本)
- Lua for Windows 的中文版本可能输出本地化的错误;
 - 控制台没用相同编码显示,就会出现乱码。
 
 
二、解决办法
方案 1:切换控制台编码为 UTF-8
在 Windows CMD 或 PowerShell 中运行:
chcp 65001
lua config.lua这会将控制台编码改为 UTF-8,乱码问题通常立即解决。
同样的你也可以修改lua文件的编码方式为GBK。
方案 2:确保 config.lua 是 UTF-8 编码(无 BOM)
用 VS Code、Notepad++ 等编辑器打开 config.lua
→ 点击右下角编码栏
→ 选择 “UTF-8 无 BOM” 保存。
方案 3:输出前手动转码(Lua 内部)
如果你必须在 GBK 控制台运行,可在 Lua 中使用转码库,例如:
-- 假设你安装了 iconv 库
local iconv = require("iconv")
local cd = iconv.new('gbk', 'utf-8')
function print_gbk(s)
    local converted, err = cd:iconv(s)
    print(converted or s)
end方案 4:换成英文版 Lua
如果乱码来自解释器(比如“错误:未指定输入或输出路径”),可以使用 英文版 Lua,避免中文报错。
💡 小结
| 可能原因 | 解决方案 | 
|---|---|
| 控制台编码不匹配 | chcp 65001 | 
| 脚本文件编码不对 | UTF-8 无 BOM 保存 | 
| 解释器本地化输出中文 | 使用英文版 Lua | 
THE END