解决运行 Lua 脚本时中文输出乱码的问题

运行 lua config.lua 时出现的乱码提示:

閿欒锛氭湭鎸囧畾杈撳叆鎴栬緭鍑鸿矾寰

其实是中文报错信息被错误编码显示导致的。
这类乱码常见于 Windows 控制台(cmd/powershell) 默认编码和 Lua 输出编码不一致。

一、原因分析

乱码原因通常有三种可能:

  1. 控制台编码与 Lua 输出编码不一致
    • Windows 控制台默认使用 GBKCP936
    • Lua 解释器或脚本文件使用 UTF-8 编码;
    • 输出中文时,字节被错误解释成乱码。
  2. 脚本文件编码不对
    • config.lua 文件本身不是 UTF-8 编码;
    • 或包含了 UTF-8 BOM 导致 Lua 读取错误。
  3. 错误消息本身是由 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