lua io.popen() 带有 ö、ä、ü、ß 的命令
2017-8-26 12:12:45
收藏:0
阅读:86
评论:2
我正在用 lua 写些东西,遇到了问题。 我知道可以使用 io.popen() 在 lua 中执行 cmd 命令
我这样做了
function move(from, to)
io.popen(string.format([==[move %s %s]==], from, to))
end
但是我遇到了一个问题,因为我是德国人,我的文件中有时会有 ö、ä、ü 或 ß,然后它就会出问题。
如何让它在所有德语字符中正常工作?
我搜索并找到了一个可能的解决方案 io.popen("chcp 1252"),但我无法让它正常工作。
编辑:我使用的是 Windows 7。
点赞
用户6834680
local cp850_to_cp1252 = {
['\128'] = '\199',
['\129'] = '\252',
['\130'] = '\233',
['\131'] = '\226',
['\132'] = '\228',
['\133'] = '\224',
['\134'] = '\229',
['\135'] = '\231',
['\136'] = '\234',
['\137'] = '\235',
['\138'] = '\232',
['\139'] = '\239',
['\140'] = '\238',
['\141'] = '\236',
['\142'] = '\196',
['\143'] = '\197',
['\144'] = '\201',
['\145'] = '\230',
['\146'] = '\198',
['\147'] = '\244',
['\148'] = '\246',
['\149'] = '\242',
['\150'] = '\251',
['\151'] = '\249',
['\152'] = '\255',
['\153'] = '\214',
['\154'] = '\220',
['\155'] = '\248',
['\156'] = '\163',
['\157'] = '\216',
['\158'] = '\215',
['\159'] = '\131',
['\160'] = '\225',
['\161'] = '\237',
['\162'] = '\243',
['\163'] = '\250',
['\164'] = '\241',
['\165'] = '\209',
['\166'] = '\170',
['\167'] = '\186',
['\168'] = '\191',
['\169'] = '\174',
['\170'] = '\172',
['\171'] = '\189',
['\172'] = '\188',
['\173'] = '\161',
['\174'] = '\171',
['\175'] = '\187',
['\176'] = '?',
['\177'] = '?',
['\178'] = '?',
['\179'] = '?',
['\180'] = '?',
['\181'] = '\193',
['\182'] = '\194',
['\183'] = '\192',
['\184'] = '\169',
['\185'] = '?',
['\186'] = '?',
['\187'] = '?',
['\188'] = '?',
['\189'] = '\162',
['\190'] = '\165',
['\191'] = '?',
['\192'] = '?',
['\193'] = '?',
['\194'] = '?',
['\195'] = '?',
['\196'] = '?',
['\197'] = '?',
['\198'] = '\227',
['\199'] = '\195',
['\200'] = '?',
['\201'] = '?',
['\202'] = '?',
['\203'] = '?',
['\204'] = '?',
['\205'] = '?',
['\206'] = '?',
['\207'] = '\164',
['\208'] = '\240',
['\209'] = '\208',
['\210'] = '\202',
['\211'] = '\203',
['\212'] = '\200',
['\213'] = '?',
['\214'] = '\205',
['\215'] = '\206',
['\216'] = '\207',
['\217'] = '?',
['\218'] = '?',
['\219'] = '?',
['\220'] = '?',
['\221'] = '\166',
['\222'] = '\204',
['\223'] = '?',
['\224'] = '\211',
['\225'] = '\223',
['\226'] = '\212',
['\227'] = '\210',
['\228'] = '\245',
['\229'] = '\213',
['\230'] = '\181',
['\231'] = '\254',
['\232'] = '\222',
['\233'] = '\218',
['\234'] = '\219',
['\235'] = '\217',
['\236'] = '\253',
['\237'] = '\221',
['\238'] = '\175',
['\239'] = '\180',
['\240'] = '\173',
['\241'] = '\177',
['\242'] = '?',
['\243'] = '\190',
['\244'] = '\182',
['\245'] = '\167',
['\246'] = '\247',
['\247'] = '\184',
['\248'] = '\176',
['\249'] = '\168',
['\250'] = '\183',
['\251'] = '\185',
['\252'] = '\179',
['\253'] = '\178',
['\254'] = '?',
['\255'] = '\160',
}
function string.from850(filename)
return (filename:gsub(".", cp850_to_cp1252))
end
使用方式: your_filename:from850()
2017-08-28 07:44:20
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

我尝试了
your_filename:fromutf8(),无论我做什么都不起作用。我还尝试了chcp 1252 & echo weiß,它什么也没改变,但最终我搞定了。``` local ersetzen = { [142] = string.char(196), --Ä [132] = string.char(228), --ä [153] = string.char(214), --Ö [148] = string.char(246), --ö [154] = string.char(220), --Ü [129] = string.char(252), --ü [225] = string.char(223), --ß }
local function split(...) local output = {} for i = 1, string.len(...) do output[i] = string.sub(..., i, i) end return output end
local function konvertieren(datei) local a = split(datei) local rest = {} for k, v in pairs(a) do table.insert(rest, (ersetzen[string.byte(v)] or v)) end return table.concat(rest) end
它可能有更简洁的方法,但这对我很有效。