我有一堆以日文命名的XML文件。我使用Lua来阅读它们并将必要的信息放入表格中。我可以打开名称只在名为.xml的单个汉字中命名的文件,但是对于像名前.xml这样的多个汉字,它是相反的。在运行Lua文件之前,我将命令行的代码页设置为65001(如UTF-8)。并阅读我需要使用从ACP(ASCII代码页?)WinAPI库到UTF-8编码文件名的文件,但这种编码只适用于单个汉字。我已经尝试了跨互联网的几个建议,使用文件的短路径等,但他们都没有工作。我试图通过以管理员身份运行Lua来使用短路径 - 正如其他类似问题所述,您需要管理员权限来使用短路径 - 但没有运气。在Lua中打开日文命名文件
...
for fn in io.popen("DIR xml /B /AA"):lines() do
...
local f = assert(io.open("xml\\" .. winapi.encode(winapi.CP_UTF8, winapi.CP_ACP, fn), "rb"))
...
end
...
但我的代码产生“无效参数”错误。我搜索了这个错误,但没有一个是与Lua相关的,所以我打开了与C/C++相关的错误,但是我得到的只是'使用_wfopen
'或类似的东西。它没有在Lua中实现,我也不想自己实现它。所以任何人有任何想法如何解决这个问题?欲了解更多信息,请务必让我知道。谢谢!
'winapi.encode()'返回什么?请显示print(fn:byte(1,-1))的输出。打印(winapi.encode(winapi.CP_UTF8,winapi.CP_ACP,fn):byte(1,-1))'某些短文件名(例如“名前.xml”) –
什么是您的ACP(ansi代码页) ?您可以在Windows注册表中看到它HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Nls \ CodePage \ ACP \ –
@EgorSkriptunoff从UTF-8:'229 144 141 229 137 141 46 120 109 108'到ACP:'150 188 145 79 46 120 109 108'和我的ACP是932. – Ortimh