LUA 复制文件时出现重音符号问题

我遇到了在 French Windows 10 中使用重音符号时的问题

local origin = "D:\temp\test.txt"
local destination = "D:\temp\testé.txt"
local cpTemplate = "copy \""..origin.."\" \""..destination.."\""
os.execute(cpTemplate)

控制台记录正确显示:

copy "D:\temp\test.txt" "D:\temp\testé.txt"

但是这并没有创建 "testé.txt" 文件,而是:

testé.txt

当然,如果文件夹名称中有重音符号(这里以 D:\temp 为例),那么什么也不会被复制

点赞
用户15592404
用户15592404

Lua 运行时库("io" 模块)不支持将 UTF8 或 UNICODE 文件名写入磁盘,因为 Lua 依赖于 ANSI C 运行时库。您需要将文件名手动转换为 Windows 系统上使用的当前控制台代码页(如 Darius 所建议的)。

您还可以使用适用于 Windows 的特定 Lua 实现,该实现使用 UTF8 字符串并且可以将 UTF8 文件名写入磁盘,如 LuaRT(https://www.luart.org)。

2021-04-09 14:41:31