LUA :如何使用 io.write() 打印 Latin1 字符串?

LUA : How to print a Latin1 string with io.write()?

在Lua5.4中,我尝试用io.write()打印Latin1编码的sone字符串,但是有些字符(à,é...)打印不好,

我该如何执行此操作?

这是使用 win-125x.lua

打印失败的截图

我猜你是 运行 Lua Windows。
因为您正在将 Latin1 字符转换为 UTF8,所以您应该在 运行 您的 Lua 脚本之前将 Windows 控制台代码页设置为 UTF8,使用以下命令:

chcp 65001

另一种选择是使用 UTF8 编码保存脚本,无需将字符串从 cp1252 转换为 UTF8,并在 运行 脚本之前使用 chcp 命令。

请记住,标准 Lua 没有字符串编码的概念,并且 Windows 在控制台中对 UTF8 字符的支持是不完整的。所以才会出现这样的问题。

也检查相关问题:Problem with accents while copying files in LUA

如果你有 table utf8 你可以做...

> do io.write(utf8.char(8364):rep(3)..'\n'):flush() end
€€€

要获取您可以执行的代码...

> do io.write(utf8.codepoint('€')..'\n'):flush() end
8364

但我不确定这是否适用于 windows。
...我在 linux.