【发布时间】:2016-08-11 13:18:26
【问题描述】:
我有一个小 lua 函数来检查文件是否存在
function file_exists( filePath )
local handler = io.open( filePath )
if handler then
io.close( handler )
return true
end
return false
end
但是,当文件路径包含特殊字符(例如德语变音符号 (äöü))时,这将始终返回 false。有没有办法解决?
非常感谢!
【问题讨论】:
-
您需要在 Windows 默认代码页(通常是 win12xx)而不是 UTF-8 中对文件名进行编码。
-
对不起,你的意思是什么?我从最初存储它们的不同来源获取文件路径
-
我的意思是你的路径(从不同的来源接收)可能在错误的代码页中。用
yourpath:byte(1,-1)检查它以猜测编码。 -
是的,它们以 UTF-8 存储。但是我想lua中没有办法转换成不同的代码页,是吗?
-
当然有办法。您的 Windows 代码页是什么?您可以从
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\ACP或通过在 LuaJIT 中运行此程序来确定您的代码页:f=require"ffi" f.cdef"int GetACP();" print(f.C.GetACP())
标签: lua windows-server-2008-r2 lua-5.1