【发布时间】:2022-01-07 05:39:38
【问题描述】:
在 LUA 中一个更复杂的脚本中,我创建了以下函数,应该是 检索位于目录中的所有音频文件的列表,该目录在调用函数时指定(第一个参数)。
该函数根据第二个参数的值返回格式化的 HTML 行或 CSV 行。
如果为 1,则返回 HTML 如果为 2,则返回 CSV
除非路径和/或文件名没有重音字母或变音符号,否则此功能可以正常工作。 然后失败。
这是一个夸张的例子,我已经用它做了测试:
J:\PRODUCTION\tüv-ààéérï-utf8\Rendering\tüv-ààéérï-utf8_.wav
我确实尝试过像这里介绍的那样实施解决方案:
converting UTF-8 string to ASCII in pure LUA
这里:
Handle special characters in lua file path (umlauts)
但没有成功。
有没有办法在 LUA 中获取带有重音/变音符号的文件名和路径?
重要提示: LUA 解释器不是独立的。它是内置的音频应用程序 Reaper。 因此,我无法单独安装某些特定的 LUA 扩展。 所以,我需要编写一些代码,但我完全迷路了。 [编辑] 操作系统 Windows,但我也应该在 Mac 和 Linux 上工作
----------------------------------------------
-- SCAN RENDERED AUDIO
----------------------------------------------
function scandir(directory,format)
local i, t, popen = 0, {}, io.popen
t = ''
local f=io.popen('dir '..directory)
for filename in popen('dir "'..directory..'" /b'):lines() do
local extension = filename:match("^.+(%..+)$")
if extension == ".wav" or
extension == ".mp3" or
extension == ".flac" or
extension == ".mov" or
extension == ".ogg" or
extension == ".mp4" then
uriFormat = filename:gsub(" ", "%%20")
if format == 1 then
t = t..'<tr class="Rendered"><td>'..directory..'</td><td>'..tostring(filename)..'</td><td><audio controls src="'..directory..'/'..tostring(uriFormat)..'"/></td></tr>'
elseif format == 2 then
t = t..directory..','..tostring(filename)..','..directory..tostring(filename)..LF
end
i = i + 1
end
end
return t
end
【问题讨论】:
标签: windows utf-8 lua codepages