通过 vscode 编译 a.lua 文件,通过 cmd 和 bash 执行 lua 来运行脚本,结果如下;
C:\Users\lawsssscat\temp>more a.lua
print("hh浣犲ソ")C:\Users\lawsssscat\temp>lua a.lua
hh浣犲ソC:\Users\lawsssscat\temp>bashlawsssscat@pc-3B8USVE-law MINGW64 ~/temp
$ cat a.lua
print("hh你好")lawsssscat@pc-3B8USVE-law MINGW64 ~/temp
$ lua a.lua
hh浣犲ソ
出现下面结果的原因:
vscode 以 utf8 格式保存的文件

cmd 以 gbk 格式读取 a.lua 文件
C:\Users\lawsssscat\temp>more a.lua
print("hh浣犲ソ")
cmd 中 lua 以 gbk 格式执行 a.lua 文件
C:\Users\lawsssscat\temp>lua a.lua
hh浣犲ソ
bash 以 utf8 格式读取 a.lua 文件
lawsssscat@pc-3B8USVE-law MINGW64 ~/temp
$ cat a.lua
print("hh你好")
bash 中 lua 依然以 gbk 格式执行 a.lua 文件
lawsssscat@pc-3B8USVE-law MINGW64 ~/temp
$ lua a.lua
hh浣犲ソ
经过上面分析,处理乱码就很简单了
(不建议) 更改 a.lua 编码(utf8 => gbk)


更改 lua 默认编码
需要重新编译,比较麻烦
参考:Lua 在 Windows 下的编码问题 - https://zhuanlan.zhihu.com/p/157815053
更改 Windows 默认编码
国内 window cmd 下默认编码时GBK,而 windows 中 lua 也是以此作为默认编码的
更改 cmd 默认编码的方式如下:
chcp 65001,则可以把当前界面暂时改成 UTF-8 编码;// 旧版
//"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],
// 新版
"terminal.integrated.profiles.windows":{"PowerShell": {"source": "PowerShell","icon": "terminal-powershell","args": ["-NoExit", "/c", "chcp 65001"]},
},
相关:
- VSCode 使用控制台输入 并配置中文编码 - https://blog.csdn.net/qq_44776065/article/details/115985579
- Vscode升级后 配置shell----profiles.windows - https://blog.csdn.net/qq_38276120/article/details/120202519
下一篇:PyOpenGL安装