LUA 5.4.0实时演示版isn';与二进制不一致

LUA 5.4.0实时演示版isn';与二进制不一致,lua,Lua,我通过下载了适用于Windows的Lua5.4.0的最新二进制文件 使用时,如果我编写以下代码: print(string.byte("§",1)) print(string.byte("§",2)) 它回来了 194 167 245 > 但是,如果我使用windows二进制文件: PS C:\Users\200207121> lua54 Lua 5.4.0 Copyright (C) 1994-2020 Lua.org, PUC-

我通过下载了适用于Windows的Lua5.4.0的最新二进制文件

使用时,如果我编写以下代码:

print(string.byte("§",1))
print(string.byte("§",2))
它回来了

194 
167
245

>
但是,如果我使用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))
它回来了

194 
167
245

>
现场演示和我的安装都使用Lua5.4.0。 我的系统上没有安装其他LUA库

为什么输出不同?

§(U+00A7)是非ASCII字符,因此其编码在不同平台之间可能不同

二进制文件之间没有区别;web版本仅使用UTF-8作为输入。Lua字符串的编码是不可知的,因此它只将您输入的字符视为字节(0xC2 0xA7)

运行Lua的终端使用旧的(单字节)OEM代码页,其中§为0xF5,因此为单字节。Lua再次简单地将您的输入视为字节,它只显示您输入的内容


所有Lua版本都是如此。

事实上,我甚至没有尝试通过在.Lua文件中写入来在本地运行它,事实上,它输出的内容与实时演示相同。奇怪的是,Powershell、standard CMD、Terminal和MinGW都有相同的代码页(这会输出“意外”的结果)。@Arthuratotout Windows控制台的向后兼容性。您可以使用
chcp
将使用过的代码页更改为通用代码页。