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

在 Lua 5.4 中,我尝试使用 io.write() 打印一些 Latin1 编码的字符串,但是一些字符(à,é...)打印效果不佳,

我该怎么做?

下面是 win-125x.lua 打印失败的截图

[[1]: should be €€€](https://i.stack.imgur.com/n1P07.png)

点赞
用户15592404
用户15592404

我猜你在 Windows 上使用 Lua。

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

chcp 65001

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

请记住,标准 Lua 没有字符串编码概念,而 Windows 对控制台中的 UTF8 字符的支持不完整。因此会出现这种问题。

也可以查看相关问题:在 LUA 中复制文件时出现重音问题

2021-05-03 02:17:40
用户11740758
用户11740758

如果你有一个名为 utf8 的表格,你可以这样操作...

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

要获取代码,可以这样操作...

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

但我不确定在 Windows 上是否有效。

...我正在使用 Linux。

2021-05-03 09:51:11