LUA 5.4.0 的在线演示与二进制文件不一致

我通过官方源下载了 Windows 版本的 LUA 5.4.0 的最新二进制文件。

在使用LUA 5.4.0 的在线演示时,如果我写下以下代码:

print(string.byte("§",1))
print(string.byte("§",2))

它会返回:

194
167

但是,如果我使用 Windows 版本的二进制文件:

PS C:\Users\200207121> lua54
Lua 5.4.0  Copyright (C) 1994-2020 Lua.org, PUC-Rio
> print(string.byte("§",1)); print(string.byte("§",2))

它会返回:

245

>

在线演示和我安装的版本均使用 LUA 5.4.0。 我的系统上没有安装其它 LUA 库。

为什么输出结果会不同?

点赞
用户1424244
用户1424244

§ (U+00A7) 是一个非 ASCII 字符,因此其在不同平台上的编码可能会有所不同。

二进制文件之间没有区别;Web 版本仅使用 UTF-8 进行输入。Lua 字符串是编码无关的,因此它会将你输入的字符当作字节(0xC2 0xA7)处理。

你运行 Lua 的终端使用了旧的(单字节)OEM 代码页,在这个代码页中,§ 被表示为 0xF5,因此只有一个字节。Lua 同样只将你的输入当作字节处理,它只会显示你输入的内容。

这一点在所有 Lua 版本中都是正确的。

2020-09-25 09:14:19