在 Lua 中打开以日语命名的文件

我有一堆用日语命名的 XML 文件。我使用 Lua 读取它们,并将必要的信息放入表格中。我可以打开仅用一种汉字命名的文件,例如 名.xml,但对于多个汉字如 名前.xml,情况则相反。在运行 Lua 文件之前,我将命令行的代码页设置为 65001(UTF-8)。为了读取这些文件,我需要使用 WinAPI 库将文件名从 ACP(ASCII 代码页?)编码为 UTF-8,但这种编码仅适用于单个汉字。我尝试了互联网上的几个建议,如使用文件的短路径等,但它们都没有成功。我尝试通过以管理员身份运行 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++ 相关的那些,但我得到的只是 'use _wfopen' 或类似的东西。它在 Lua 中没有实现,我也不想自己实现它。有没有人有任何想法如何解决这个问题?如需更多信息,请务必让我知道。谢谢!

点赞
用户6834680
用户6834680

我不知道为什么你的程序不能工作,但是尝试以下解决方法:

local pipe = io.popen([[for %G in (xml\*) do @(type "%G" & echo @FILENAMEMARKER#%G)]], "rb")
local all_files = pipe:read"*a"
pipe:close()
for filecontent, filename in all_files:gmatch"(.-)@FILENAMEMARKER#(.-)\r?\n" do
   -- 在此处理你的文件
   print('===== 这是你的文件名:')
   print(filename)
   print('== 这是你的文件内容:')
   print(filecontent)
   print('== 文件结束')
end
2017-03-09 17:21:31
用户7480063
用户7480063

我认为您可以在表格中使用日文字母,例如

``` 本地 jaAlphbet={"一","|","丶","ノ","ä¹™","亅","<","二","亠","人","⺅","","å„¿","å…¥","ハ","丷","冂","冖","冫","几","凵","刀","⺉","力","勹","匕","匚","十","卜","卩","厂","厶","又","マ","九","ユ","乃","","⻌","口","å›—","土","士","夂","夕","大","女","子","宀","寸","小","⺌","å°¢","å°¸","å±®","å±±","川","å·›","å·¥","å·²","å·¾","å¹²","幺","广","å»´,"廾","弋","弓","ヨ","彑","彡","å½³","⺖","⺘","⺡","⺨","⺾","⻏","â»

2017-03-09 17:28:47